重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、selenium元素定位样例
创新互联主要从事网站制作、成都网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务迎泽,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
以下是一段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").Click Dialog("Login_2").Dialog("FlightReservations").Static("The password is 'MERCURY'").CheckCheckPoint("The password is 'MERCURY'") Dialog("Login_2").Dialog("FlightReservations").WinButton("确定").Click Dialog("Login").WinButton("OK").Click Window("FlightReservation").Activate Window("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值 ,重复上述修改步骤,逐个修改其它属性值,仍然不影响脚本运行。通过测试发现,修改按钮任何属性都不影响脚本执行。