Selenium八大定位方式

1、通过id定位,id是一个标签的唯一属性值,但是有时候前端不一定会对这个标签写id。源代码如下所示,搜索框位置有id。
Selenium八大定位方式_第1张图片

使用代码:
driver.find_element_by_id('kw')

【有时候页面元素中随着刷新网页id的值是会变化的,说明是js动态生成的id属性值,这时候用来定位就会产生问题,所以不太可能将其设置为定位方式。】

2、通过name定位,name有时候不会存在。依旧如上图所示,name=”wd”,通过这个代码去做定位。

使用代码:
driver.find_element_by_name('wd')

3、通过link_text定位,这是指链接的全部文字来定位,只使用在链接位置处,比如a标签。
Selenium八大定位方式_第2张图片

使用代码:
driver.find_element_by_link_text('新闻').click()

4、通过partial_link_text定位,这是指链接的部分文字来定位,同样也只使用在链接位置处,比如a标签。

使用代码:
driver.find_element_by_partial_link_text('新').click()

5、通过class_name定位,比如下图的搜索框是存在一个class的值。
Selenium八大定位方式_第3张图片

使用代码:
	driver.find_element_by_class_name("s_ipt")

【class在html的标签中是会存在多个相同的class值的,所以一般不经常使用这个作为定位方式,有时候定位不准确】

6、通过tag_name定位,比如下图的搜索框是一个input标签,这里使用这个定位方式存在一定的难度,因为还有几个隐藏形式的input标签。此外定位时候经常不会使用这种方式去定位,存在极大的不稳定性。所以这里设置假设是这样定位。

代码:driver.find_elements_by_tag_name("input").send_keys('喜羊羊')

Selenium八大定位方式_第4张图片

7、通过xpath定位,这是比较常用的一种定位方式。下面所使用的//表示是以相对定位,不依赖页面元素顺序和位置。使用的/表示以绝对定位,依赖页面元素顺序和位置。一般相对定位定位不到的情况下才会使用绝对定位。
代码:

1)元素属性定位driver.find_element_by_xpath('//*[@id="kw"]')2)元素属性定位driver.find_element_by_xpath('//input[@id="kw"]')3)多个属性重复时,属性与逻辑结合定位driver.find_element_by_xpath("//input[@id='kw' and @name='wd']")4)属性与标签层级定位,在下面这条代码中不知道为什么通过这种方法定位不到。可能是input标签还存在可以定位的属性,所以导致定位失败的原因。这只是我的猜测。driver.find_element_by_xpath("//span[@id='s_kw_wrap']/input)5)contains定位,注意属性值需要带引号去使用。
	driver.find_element_by_xpath("//input[contains(@class,'s')]")6)starts-with定位,注意属性值需要带引号去使用。
driver.find_element_by_xpath("//input[starts-with(@class,'s')]")7)轴定位,ancestor当前结点的所有先辈;child当前所有结点的子元素;parent当前所有结点的父结点;self当前结点;following当前结点的结束标签之后的所有结点。这种不是很熟悉,先停在这里。类似于下面代码
driver.find_element_by_xpath("//span[@id='s_kw_wrap']//following::input[1]")

【xpath是定位中最经常使用的方式,在我看来的角度】

8、通过css_selector定位,这种方法比较困难。

代码:
id定位driver.find_element_by_css_selector("#kw")
class定位driver.find_element_by_css_selector(".s_ipt")
标签定位driver.find_element_by_css_selector(input),这个位置只是展示,在百度的搜索框中不会定位成功
其他定位,比如name。driver.find_element_by_css_selector([name=’wd’])

类class用.表示,id用#表示。css定位是比较复杂的,这里只是记录一下简单的定位方式。

你可能感兴趣的:(selenium,python,selenium定位)