热门IT资讯网

如何用自动化测试工具实现元素定位?

发表于:2024-11-30 作者:热门IT资讯网编辑
编辑最后更新 2024年11月30日,1、selenium元素定位样例以下是一段Python+ selenium的用例样例,对元素的操作是以元素id为基础的 from selenium import webdriver url = "ht

1、selenium元素定位样例

以下是一段Python+ selenium的用例样例,对元素的操作是以元素id为基础的

 from selenium import webdriver url = "http://10.98.110.44/egov-portal/egov/shIndex.html" # 打开浏览器,最大化浏览器 driver = webdriver.Chrome() driver.get( url ) driver.implicitly_wait( 10 ) driver.maximize_window() #输入账号 driver.find_element_by_id("username").send_keys("zhangsan") #输入密码 driver.find_element_by_id("password").send_keys("ww1234") #点击登录按钮 driver.find_element_by_id("submitButton").click()

 2、robotFramwork+seleniuLibrary元素定位样例

3、UFT工具元素定位方法样例

Dialog("Login").WinEdit("AgentName:").Set "mercury"Dialog("Login_2").WinButton("Help").ClickDialog("Login_2").Dialog("FlightReservations").Static("The password is 'MERCURY'").CheckCheckPoint("The password is 'MERCURY'")Dialog("Login_2").Dialog("FlightReservations").WinButton("确定").ClickDialog("Login").WinButton("OK").ClickWindow("FlightReservation").ActivateWindow("FlightReservation").ActiveX("MaskEdBox").Type "102715"#选择日期Window("Flight Reservation").WinComboBox("FlyFrom:").Select "Frankfurt"

从以上信息我看到,元素的定位都是通过元素的属性定位,元素属性主要有以下8种:

1、id定位: driver.find_element_by_id("kw")

2、name定位: driver.find_element_by_name("wd")

3、class定位: driver.find_element_by_class_name("s_ipt")

4、tag定位:driver.find_element_by_tag_name("input")

5、link定位:driver.find_element_by_link_text("新闻")

6、partial_link定位:driver.find_element_by_partial_link_text()

7、xpath定位: driver.find_element_by_xpath("/html/body/div[2]/div/form/div/input")

8、CSS定位:driver.find_element_by_css_selector

在现有的自动化软件当中,都是以上述8种定位方式中的一种对元素进行定位。现在现实的测试环境经常不是我们想象的那样平静。页面中出现id,name,tag 重复的很多。也许在我们写用例的不重复,经过一轮版本修改后很可能变得重复了。xpath是最不可能失效的,但是经常因父节点的修改而导致失效是常有的事。因此自动化设计人员疲于奔命的维护用例,工作量非常的巨大。

2008年市场上出现一款kylinTOP的软件,支持智能元素定位, 我比较感兴趣就去研究了一下,该软件的用例主要通过录制生成,录制生成一些可视化的脚本,如下所示:录制脚本是打开一个页面,击点一个按钮。

上图是点按钮的步骤,步骤中记录了按钮的多个属性:title|alt、src、border、alt、xpath以及它的孩子信息。有些属性并不能唯一定位元素(页面中存在重复),如:border。kylinTOP记录下了按钮元素的所有身份信息。当笔者尝试修改页面代码中title|alt的值 ,使页面中title|alt的值有重复。在脚本回放时,仍然可以正常运行。恢复title|alt值 ,重复上述修改步骤,逐个修改其它属性值,仍然不影响脚本运行。通过测试发现,修改按钮任何属性都不影响脚本执行。

0