首先是id和name定位
id 和 name 是我们最常用的定位方式,因为大多数元素都有这两个属性,而且在对控件的 id 和 name 命名时一般为了使其有意义也会取不同的名字,所以通常都是唯一的
image.png以上图为例,可以看出第一个input控件的id是“gs_htif0”,所以通过id定位元素语句如下:
driver.find_element_by_id("gs_htif0")
上图中的第二个input控件可以看出它的name属性值是“btnK”,通过name定位元素:
driver.find_element_by_name("btnK")
通过tag name和class name定位
image.png通过元素中带的class属性对元素进行定位:
class=”jhp_big”: find_element_by_class_name(“jhp_big”)
class=”s_ipt”: find_element_by_class_name("s_ipt")
通过tag标签名对对元素进行定位:
tag=<div>: find_element_by_tag_name("div")
tag=<form>: find_element_by_tag_name("form")
tag=<input>: find_element_by_tag_name("input")
Link text和partial link text定位:
image.png通过link text定位元素:
find_element_by_link_text("新 闻")
find_element_by_link_text("贴 吧")
find_element_by_link_text("一个很长的文字连接")
通过partial link text也可以定位到上面几个元素:
find_element_by_partial_link_text("新")
find_element_by_partial_link_text("吧")
find_element_by_partial_link_text("一个很长的")
Xpath和css定位:
后续会补充xpath是如何进行定位的
img.png
如何同时定位一组元素?
webdriver 可以很方便的使用 find_element 方法来定位某个特定的对象,不过有时候我们却需要定位一 组对象,WebElement 同样提供了定位一组元素的方法 find_elements。
模拟场景:页面上有20个复选框需要勾选,有了find_elements方法后就可以用以下代码来实现了,而不需要去一一定位20个复选框
# 选择页面上所有的 tag name 为 input 的元素
inputs = driver.find_elements_by_tag_name('input')
#然后从中过滤出 tpye 为 checkbox 的元素,单击勾选
for input in inputs:
if input.get_attribute('type') == 'checkbox':
input.click()
网友评论