selenium - webdriver 定位一组元素

Posted 小虫虫的大梦想

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium - webdriver 定位一组元素相关的知识,希望对你有一定的参考价值。

例1:

首先,自己编写一个html,包含3个复选框,如下图:

 HTML代码如下:

 1 <html>
 2     <head>
 3         <meta http-equiv="content-type" content="text/html;charset=utf-8" />
 4         <title>checkbox</title>
 5     </head>
 6     <body>
 7         <div>
 8             <label>checkbox1</label>
 9             <input type="checkbox" id="c1" />
10         </div>
11         <div>
12             <label>checkbox2</label>
13             <input type="checkbox" id="c2" />
14         </div>
15         <div>
16             <label>checkbox2</label>
17             <input type="checkbox" id="c3" />
18         </div>
19     </body>
20 </html>

 

下面,来勾选这3个复选框

与定位单个元素的方法类似,只在element后加s,即可定位一组元素,例如:find_elements_by_id()

 1 from selenium import webdriver
 2 import time, os
 3 
 4 driver = webdriver.Chrome()
 5 # path.abspath()方法用于获取当前路径下的文件
 6 file_path = \'file:///\' + os.path.abspath(\'checkbox.html\')   
 7 driver.get(file_path)
 8 
 9 checkboxes = driver.find_elements_by_xpath("//input[@type=\'checkbox\']")   # 找到复选框
10 
11 for chekbox in checkboxes:   # 遍历每一个复选框,并点击勾选
12     chekbox.click()
13     time.sleep(1)
14 
15 driver.quit()

 也可以按如下方式查找并勾选元素:

inputs = driver.find_elements_by_tag_name(\'input\')

for i in inputs:
    if i.get_attribute(\'type\') == \'checkbox\':
        i.click()
        time.sleep(1)

另外,还可以进行其它操作:

print(len(checkboxes))  # 打印复选框的个数
driver.find_elements_by_xpath("//input[@type=\'checkbox\']").pop().click()   # 将最后一个复选框的勾选去掉

pop()方法,用于获取列表中的某一个元素,默认为最后一个,并返回该元素的值。若想勾选一组元素中的某一个元素,可按如下方法:

  • pop(0)  第一个
  • pop(1)  第二个
  • ....
  • pop()或pop(-1)  最后一个

 

例2:

打印百度搜索结果

 1 from selenium import webdriver
 2 import time
 3 
 4 driver = webdriver.Chrome()
 5 driver.get(\'http://www.baidu.com\')
 6 
 7 driver.find_element_by_id(\'kw\').send_keys(\'selenium\')
 8 driver.find_element_by_id(\'su\').click()
 9 time.sleep(2)
10 
11 divs = driver.find_elements_by_xpath(\'//div[@tpl="se_com_default"]/h3/a\')  # 定位一组元素
12 
13 print(len(divs))  # 计算匹配结果个数
14 
15 for div in divs:  # 循环遍历出每一条搜索结果的标题
16     print(div.text)

打印结果如下:

7
Selenium automates browsers. That\'s it!
selenium库的基本使用 - 简书
selenium中文网 | selenium安装、selenium使用、selenium中文...
Selenium - 知乎
Selenium with Python — Selenium Python Bindings 2...
以后再有人问你selenium是什么,你就把这篇文章给他 - TestingGDR...
Selenium.com

 

以上是关于selenium - webdriver 定位一组元素的主要内容,如果未能解决你的问题,请参考以下文章

轻松自动化---selenium-webdriver(python)

轻松自动化---selenium-webdriver(python)

selenium定位一组元素操作

Selenium 定位一组元素

6-selenium-定位一组元素

Selenium 3----定位一组元素+多表单切换+多窗口切换