1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 定位到元素后获取其属性_Selenium界面自动化测试(4)(Python):元素定位及操作...

定位到元素后获取其属性_Selenium界面自动化测试(4)(Python):元素定位及操作...

时间:2024-02-02 15:12:49

相关推荐

定位到元素后获取其属性_Selenium界面自动化测试(4)(Python):元素定位及操作...

在操作Web元素之前,需要先找到该元素,这个查找的过程称之为元素定位。

Selenium支持8种元素定位方法:

ID:根据元素的id属性值来定位元素。

Name:根据元素的name属性值来定位元素。

Class Name:根据元素的class属性值来定位元素。不允许使用复合类名,即当时,不能使用“class-a class-b”来定位该元素,但可以使用“class-a”或“class-b”来定位。

Tag Name:根据元素的HTML标签名来定位元素。

CSS Selector:根据CSS选择器来定位元素。CSS选择器常用语法如下表所示:

XPath:根据XPath表达式来定位元素。XPath全称XML Path Language,即XML路径语言,其常用语法如下表所示:

Link Text:根据超链接文本来定位元素。其基于XPath定位。

Partial Link Text:根据超链接中的部分文本来定位元素。其基于XPath定位。

By类中有8个类变量分别用于表示以上8种元素定位方法,然后结合WebDriver对象的find_element或find_elements方法使用,前者返回WebElement对象,后者返回WebElement列表对象。WebElement对象表示单个元素,WebElement列表对象表示一组元素。

一旦定位到了元素,即可对元素进行操作,比如输入文本、点击、获取文本等。

find_element和find_elements方法是WebDriver基类提供的,如果使用Chrome、Firefox等WebDriver的子类时,还可以调用诸如find_element_by_css_selector之类的快捷方法,可避免使用By类。

如果您还没部署IMS,请参考“Dubbo接口自动化测试(2):部署示例应用程序”。

以登录IMS为例演示元素定位及操作:

from time import sleepfrom selenium.webdriver import Chromefrom mon.by import Bywith Chrome() as driver: driver.get('http://localhost:9002/login') # 使用WebDriver基类的方法 username = driver.find_element(By.CSS_SELECTOR, "input[type='text']") username.send_keys('zhangsan') # 使用WebDriver子类Chrome的方法 password = driver.find_element_by_css_selector("input[type='password']") password.send_keys('zhangsan123456') button = driver.find_element_by_class_name('el-button') button.click() sleep(1) expected_element = driver.find_element_by_css_selector('#nav > div:nth-child(2) > span') assert expected_element.text == 'zhangsan'

以上代码分别使用send_keys和click方法进行了输入文本和点击的操作,并访问了WebElement对象的text属性获取元素的文本。在点击了登录按钮后,加了1秒的等待时间,否则有可能IMS首页还未加载完成,导致无法对IMS首页上的元素进行操作。

由于以上WebElement对象仅使用了一次,因此可以简化代码,比如将:

username = driver.find_element(By.CSS_SELECTOR, "input[type='text']")username.send_keys('zhangsan')

修改为:

driver.find_element(By.CSS_SELECTOR, "input[type='text']").send_keys('zhangsan')

除了以上介绍的send_keys和click方法,以及text属性,WebElement对象还可以进行更多操作,比如is_selected、is_enabled和is_displayed方法分别用于检验元素是否选中、检验元素是否启用和检验元素是否显示。

在实际项目中,经常需要遍历一组元素,并从该组元素中找到指定需求的某个元素。比如登录IMS后,在IMS首页的列表中查找是否存在MacBook Air电脑:

goods = driver.find_elements_by_css_selector('tbody > tr')exist = Falsefor good in goods: if good.find_element_by_class_name('el-table_1_column_2').text == 'MacBook Air': exist = True breakassert exist

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。