获取测试对象的属性能够帮我们更好的进行对象的定位。比如页面上有很多标签为input 元素,而我们需要定位其中1 个有具有data-node 属性不一样的元素。由于webdriver 是不支持直接使用data-node 来定位对象的,所以我们只能先把所有标签为input 都找到,然后遍历这些input,获取想要的元素。
代码示例:
<input type="checkbox" data-node="594434499" data-convert="1" data-type="file">
<input type="checkbox" data-node="594434498" data-convert="1" data-type="file">
<input type="checkbox" data-node="594434493" data-convert="1" data-type="file">
<input type="checkbox" data-node="594434497" data-convert="1" data-type="file">
通过find_elements 获得一组元素,通过循环遍历打到想要的元素:
# 选择页面上所有的tag name 为input 的元素
inputs = driver.find_elements_by_tag_name('input')
#然后循环遍历出data-node 为594434493的元素,单击勾选
for input in inputs:
if input.get_attribute('data-node') == '594434493':
input.click()
……
如果读者细心会发现,我们在前面定位一组对象时已经用到了这个方法,当时判断是具有一组相同属性的元素,对其进行操作。这里判断是属性值不同的元素对其进行操作。灵活的运用这个技巧,才会让我们面对各种对象和需求时变得游刃有余。