自动化测试:Selenium的元素定位方式

几乎所有的自动化工具要模拟用户操作,都要识别出用户在对哪个元素做什么操作。

哪个元素即操作元素的识别,就是大家通常说的元素定位。Selenium根据我们提供的元素定位信息,找到对应元素,然后做后续的操作。如果元素定位有问题,则可能导致操作失败,或者操作到其他元素,导致无法实现预期效果。

那么如何进行元素定位呢,Selenium的WebDriver提供了8大元素定位方式,我们先看前六种元素定位方式。

1.0如何查看元素属性

如何知道一个按钮的ID是什么,Name或者Class Name是什么呢?

每个浏览器几乎都有开发者工具,我们可以在里边进行Web前端的调试等操作:

A.可以在浏览器菜单中查找,或者直接按F12打开开发者工具;


自动化测试:Selenium的元素定位方式

打开开发者工具


B.切换到Elements页签,

C.点击左上角鼠标图标,

D.把鼠标移动到想查看的元素上,右侧展示对应web元素的属性等信息

自动化测试:Selenium的元素定位方式

查看元素属性

1.1根据ID定位

假设要操作的Web元素定义如下:

这里有个属性是id="su",那么我们可以根据id进行元素定位:

element = driver.find_element_by_id("su")

1.2根据NAME

这里有个属性是name="wd",那么我们可以根据name进行元素定位:

element = driver.find_element_by_name("wd")

1.3根据LinkText

如果一个超链接元素,没有id和name属性,链接文本信息是唯一的:

那么我们可以根据link_text进行定位:

element = driver.find_element_by_link_text(

"贴吧")

1.4根据PartialLinkText

我们可以做超链接字符串的部分匹配:

超链接字符串为:Python(计算机程序设计语言)_百度百科

我们查找时进行部分匹配:在当前页面查找超链接字符串包含“_百度百科”的元素

ele = driver.find_element_by_partial_link_text("_百度百科")

ele.click()

1.5根据class Name

每个元素在定义时有class属性,相当于把这个元素划归到某类中:

则可以根据类别名称进行定位:

ele = driver.find_element_by_class_name("s_ipt")

*如果元素定义时class值中间带空格,相当于这个元素同时属于多个类别:

按照整个class的值定位会失败,可以根据部分类名定位:

ele = driver.find_element_by_class_name("s_ipt_wr")

1.6根据tag Name

每个元素在HTML文件中,都有个标签名称,如input,div,form,span等:

若元素没有id,name这些易于定义的属性,也可以根据标签名称input进行定位:

ele = driver.find_element_by_tag_name("input")

*通常一个页面上同类型的标签会不止一个,需要进行过滤。


更多内容请参考:

自动化测试:Selenium的元素定位方式


分享到:


相關文章: