Python学习:Selenuim+Python元素定位总结

2023-11-11

对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象。一个对象就是一个人一样,他会有各种的特征(属性),如比我们可以通过一个人的身份证号,姓名,或者他住在哪个街道、楼层、门牌找到这 个人。

那么一个对象也有类似的属性,我们可以通过这个属性找到这对象。

注意:不管用那种方式,必须保证页面上该属性的唯一性

webdriver 提供了一系列的对象定位方法,常用的有以下几种:

  • id
  • name
  • class name
  • link text
  • partial link text
  • tag name
  • xpath
  • css selector

我们以百度搜索框为例,对上述方法进行一一实现:

在chrome浏览器百度首页鼠标右击可以看到怕【检查】字样,点击,就可以看到html源码,如下图:

可以看到百度搜索栏的name,id,等等信息;

注:以下都是以百度输入框为例子:

id name 是我们最最常用的定位方式,因为大多数控件都有这两个属性,而且在对控件的id name 命名时一般使其有意义也会取不同的名字。通过这两个属性使我们找一个页面上的属性变得相当容易。

1.通过id和name方式定位

注意:如果id是动态的,则不能使用这个方法。

id定位百度输入框:
browser.find_element_by_id("kw")
​name定位百度输入框:
browser.find_element_by_name("wd")

​

 

2.通过class name和tag name方式定位

从上面的百度输入框的属性信息中,我们看到,不单单只有id name 两个属性, 比如class tag name(标签名)

class name定位百度输入框:
browser.find_element_by_class_name("s_ipt")
tag name定位百度输入框
browser.find_element_by_tag_name("input")

3.通过link text方式定位(文字精确定位)

有时候不是一个输入框也不是一个按钮,而是一个文字链接,我们可以通过link

link text定位百度输入框:
browser.find_element_by_link_text("hao123")

4.通过partial link text方式定位(文字模糊定位)

通过部分链接定位,这个有时候也会用到,我还没有想到很好的用处。拿上面的例子,我可以只用链接的一部分文字进行匹配:

partial link text定位百度输入框:
browser.find_element_by_partial_link_text("hao")

5.通过xpath方式定位

什么是XPathhttp://www.w3.org/TR/xpath/

XPath 基础教程:http://www.w3schools.com/xpath/default.asp

XPath 是一种在XML 文档中定位元素的语言。因为HTML 可以看做XML 的一种实现,所以selenium 用户可是使用 这种强大语言在web 应用中定位元素。

XPath 扩展了上面id name 定位方式,提供了很多种可能性。

XPATH的获取可以用chromeF12开发者模式中Element-右键-copy-copy xpath来获取

xpath定位百度输入框:
browser.find_element_by_xpath("//*[@id='kw']")

6.通过css selector方式定位

CSS(Cascading Style Sheets)是一种语言,它被用来描述HTML XML 文档的表现。

CSS 使用选择器来为页面元素绑定属性。这些选择器可以被selenium 用作另外的定位策略。

CSS 的比较灵活可以选择控件的任意属性.

CSS的获取可以用chromeF12开发者模式中Element-右键-copy-copy selector来获取。

CSS定位百度输入框:
browser.find_element_by_css_selector("#kw")

附上完整代码:

#coding=utf-8
from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.get("http://www.baidu.com")
#########百度输入框的定位方式##########
#通过id 方式定位
browser.find_element_by_id("kw").send_keys("selenium")
#通过name 方式定位
browser.find_element_by_name("wd").send_keys("selenium")
#通过tag name 方式定位
browser.find_element_by_tag_name("input").send_keys("selenium")
#不能成功,因为input太多了不唯一。
#通过class name 方式定位
browser.find_element_by_class_name("s_ipt").send_keys("selenium")
#通过CSS 方式定位
browser.find_element_by_css_selector("#kw").send_keys("selenium")
#通过xphan 方式定位
browser.find_element_by_xpath("//*[@id='kw']").send_keys("selenium")
#link text 定位
browser.find_element_by_link_text("hao123").click();
#Partial link text定位
browser.find_element_by_partial_link_text("hao").click();
###########################################
browser.find_element_by_id("su").click()
browser.quit()

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python学习:Selenuim+Python元素定位总结 的相关文章

随机推荐