上节课我们学习了自动化测试工具WebDriver API的基本使用和元素定位,相信大家都已经掌握了。不懂的可以咨询在线老师,一对一解答。这节课我们一起来学习自动化测试工具的简单元素定位:
所有的自动化工具要模拟用户操作,一般都要识别出用户在对哪个元素做什么操作。
哪个元素即通常大家说的元素定位。我们需要告诉Selenium操作哪个元素,Selenium根据我们提供的信息到运行程序上进行元素匹配,匹配到即进行操作。
WebDriver 提供了8大元素定位方式,我们先看前六种元素定位方式。
一、根据Id定位
假设要操作的Web元素定义如下:
这里有个属性是id="su",那么我们可以根据id进行元素定位:
element = driver.find_element_by_id("su")
二、根据Name定位
这里有个属性是name="wd",那么我们可以根据name进行元素定位:
element = driver.find_element_by_name("wd")
三、根据LinkText定位
超链接在web网站中很常见,通过它可以实现页面的跳转。
以百度搜索为例,通过开发者工具,看到如下超链接的创建语句:
我们看到超链接a标签即没有id也没有name属性,那么我们怎么找到它?
如果一个页面有多个超链接,那么至少从超链接文本上能够区分,如:
同样的,selenium中也根据link text进行超链接定位,要查找第一个超链接,把它的超链接文本做为参数传递给
find_element_by_link_text方法:
Link_element = driver.find_element_by_link_text("自动化专业现在吃香吗")
四、根据PartialLinkText定位
我们可以做超链接字符串的部分匹配:
Python(计算机程序设计语言)_百度百科
超链接字符串为:Python(计算机程序设计语言)_百度百科
部分匹配:在当前页面查找超链接字符串包含“_百度百科”的元素
ele = driver.find_element_by_partial_link_text("_百度百科")
ele.click()
五、根据class Name定位
每个元素在定义时有class属性,相当于把这个元素划归到某类中:
则可以根据类别名称进行定位:
ele = driver.find_element_by_class_name("s_ipt")
* 如果元素定义时class值中间带空格,相当于这个元素同时属于多个类别:
按照整个class的值定位会失败,可以根据某个类名定位:
ele = driver.find_element_by_class_name("s_ipt_wr")
六、根据tag Name定位
每个元素在HTML文件中,都有个标签名称,如input,div,form,span等
若元素没有id,name这些易于定义的属性,也可以根据标签名称input进行定位:
ele = driver.find_element_by_tag_name("input")
* 通常一个页面上同类型的标签会不止一个,需要进行过滤。
这节课就讲到这里啦,大家喜欢的话记得每天来这里和小编一起学习涨薪技能哦。(笔芯)