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