Selenium-Webdriver(python)学习笔记(四)
----定位元素组,层级定位
1.定位元素组
当我们要确认某一种元素数量或需要从某一些类似元素中找到特定元素时
比如列表中的一组CheckBox.这时可以用到find_elements系列函数
代码如下(代码中使用xpath定位元素):
group.py:
import os from time import sleep from distutils import log from selenium import webdriver dr = webdriver.Firefox() url = "file:///%s" % (os.path.abspath("CheckBox.html")) dr.get(url) CheckBoxs = dr.find_elements_by_xpath("//div/input[@type='CHECKBOX']") # 输出共有多少个CheckBox log.warn("Counts of CheckBox: %d" % len(CheckBoxs)) # 每隔1秒勾选一个CheckBox for checkbox in CheckBoxs: checkbox.click() sleep(1) # 取消勾选第1个元素 CheckBoxs[0].click() sleep(3) dr.close()
3次运行输出结果(html中随机生成CheckBox次数):
Counts of CheckBox: 6
Counts of CheckBox: 3
Counts of CheckBox: 1
2.层级定位
当目标元素不容易定位了,我们可以先定位到比较容易定位的父级元素再找到目标元素
代码如下:
import os from time import sleep from selenium import webdriver dr = webdriver.Firefox() url = "file:///%s" % (os.path.abspath("CheckBox.html")) dr.get(url) div = dr.find_element_by_xpath("//div[@id='div']") # 通过已定位的div定位第一个CheckBox checkbox1 = div.find_element_by_tag_name('input') checkbox1.click() sleep(3) dr.close()
输出结果:
无