关键词不能为空

当前您在: 主页 > 英语 >

Selenium+Python(元素定位)

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-28 05:40
tags:

-

2021年2月28日发(作者:欺诈)


什么是


selenium







selenium


自动化测试工具,


它 主要是用于


Web


应用程序的自动化测试,

但肯


定不只局限于此,同时支持所有基于


web

< p>
的管理任务自动化。




























sel enium


经历了两个版本,


selenium1.0



selenium2.0


< br>selenium


也不是简单一


个工具,而是由几个工具 组成,每个工具都有其特点和应用场景。




Selenium IDE





Selenium Grid




Selenium RC



















Selenium 2.0






Selenium


RC


在浏览器中运行


JavaScr ipt


应用,使用浏览器内置的


JavaScript


翻译器来翻译和执行


selenese


命令(< /p>


selenese



selenium< /p>


命令集合)







WebDriver


通过原生浏览器或者浏览器扩展直接控制浏览器。


WebDriver


针对


各个浏览器而开发,取代了嵌入到被测


W eb


应用中的


JavaScript


。 与浏览器的紧


密集成支持创建更高级的测试,避免了


JavaS cript


安全模型导致的限制。除了来


自浏览器厂商的支持,


WebDriver


还利用操作系统级的调用模拟用户输入。< /p>

























web driver


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





id



name



class name



tag name



link text



partial link text



xpath



css selector


分别对应


Python Webdriver


中的方法为:






find_element_by _link_text(


新闻



find _element_by_partial_link_text(


< br>





//


局部模糊定位


(关键字一定要唯一)















Xpath


定位




用绝对路径定位:



find_element_by_xpath(


当我们所要定位的元素很难找 到合适的方式时,


都可以通过这种绝对路径的方式


定位,


缺点是当元素在很多级目录下时,


我们不得不要写很长的路径,


而且这种


方式难以阅读和维护。



相对路径定位:



find_element_by_xpath(




#


通过自身的


id


属性定位



find_elem ent_by_xpath(


'input-container'


]/input



#

< br>通过上一级目


录的


id


属性定位



find_element_by_xpath(


'hd'


]/form/span/input




#


通过上三级目录

< br>的


id


属性定位



find_element_by_xpath(


'q'


]/form/span/input





#


通过上三级目


录的


name

< br>属性定位





通过上面的例子,我们可以看到


XPath


的定位方式非常灵活和强大的,而且


XPath


可以做


布尔逻辑运算


,例如:


//div[@id=' hd ' or @name=' q ' ]




当然,它的缺陷也非常明显:


1


、性能差,定位元素的性能要比其它大多数方


式差;


2



不够健壮,


XPath< /p>


会随着页面元素布局的改变而改变;


3.


兼容性不好,


在不同的浏览器下对


XPath


的实现是不一样的。










操作测试对象:



Webdriver


中比较常用的操作元素的方法有下面几个:






clear




清除元素的内容






send_keys




在元素上模拟按键输入






click




单击元素






submit



提交表单



submit()


要求提交对象是一个表单,更强调对信息的提交。


click()


更强调事件的独


立性。


(比如,一个文字链接 就不能用


submit()


方法。


)< /p>




WebElement


接口常用方法



WebElement


接口除了我们前面介绍的方法外,


它还包含了别的一些有用的方法。


下面,我们例举几个比较有用的方法 。






size


(返回元素的尺寸。


)例:








#


返回百度输入框的宽高








size = _element_by_id(







print size





text


(获取元素的文本)例:








#


返回百度页面底部备案信息








text = t_by_id(







print text





get_attribute(name)


(获取属性值)例:








#


返回元素的属性值,可以是


id



name



type


或元素拥有的其他任意属性








attribute = _element_by_id(







print attribute


(这个方法在定位一组数据时将变得非常有用)






is_displayed()


(设置该元素是否用户可见)



例:








#


返回元素的结果是否可见,返回结果为


True


False







result = _element_by_id(







print result



鼠标事 件:实际的


web


产品测试中发现,有关鼠标的操作,不单单只 有单机,


有时候还用到右击,双击,拖动等操作,这些操作包含在


ActionChains


类中。





ActionChains


类鼠标操 作的常用方法:







context_click()



右击







double_click()



双击







drag_and_drop()



拖动







move_to_element()



鼠标悬停在一个元素上







click_and_hold()



按下鼠标左键在一个元素上






鼠标右击操作:








context_click()



(右键点击一个元素)



例:








#


引入


ActionChains









from



_chains



import



ActionChains







...







#


定位到要右击的元素








right = _element_by_xpath(< /p>


XX








#


对定位到的元素执行鼠标右键操作








ActionChains(driver).contex t_click(right).perform()









ActionChains(driver)



driver



webdr iver


实例执行用户操作。


ActionChains














用于生成用户的行为:所有的行为都存储在


ActionChain s


对象。通过














perform()


执行存储的行为。










per form()


:执行所有


ActionChains

< p>
中存储的行为。


perfrom()


同样也是








ActionChains


类提供的方法,通常与


ActionChains()


配合使用。




键盘事件:有 时候我们在测试时需要使用


tab


键将焦点转移到下一个元素, 用于



验证元素的排序是否正确。


we bdriver



keys()


类提供 键盘上所有按键的操作,



至可以模拟一些组合键的操作,如< /p>


Ctrl+A



Ctrl+C/Ctrl +V


等。在某些更复杂的情


况下,还会出现使用


send_keys


来模拟上下键来操作下拉列表的情况。


代码示例:







































打印信息






通常我们可以通过获得页面的


tit le



URL


地址,页面上的标识性信 息(如:


登录成功的“欢迎,


XXX


” 信息)来判断用例执行成功。







在实际测试中,访问


1


个页面然后判断其


title

是否符合预期是很常见的一


个用例,假如一个页面的


tit le


应该是“百度一下”


,那么用例可以这样描述:访


问该页面,判断页面


title


是否等于“百度 一下”








获取当前


URL


也是非常重要的一个操作,在某些情况下,你访问一个


U RL



这时系统会自动对这个


URL< /p>


进行跳转,这就是所谓的“重定向”


。一般测试重定


向的方法是访问这个


URL



然后等待页面重定向完毕之后,


获取当前页面的


URL



判断该


URL


是否 符合预期。如果页面的


URL


返回不正确,而表示当前操作没有


进行正常的跳转。



示例代码:





















设置等待时间:






sle ep()


:设置固定休眠时间。


Python

< br>的


time


包提供了休眠方法


s leep()


,导入


time


包后就可 以使用


sleep()


进行脚本的执行过程进行休眠。






implicity_wait()


:是


webdi rver


提供的一个超时等待。等待一个元素被发现,


或一个命 令完成。如果超出了设置时间则抛出异常。






WebDriverWait()



同样也是


webdirver


提供的方法。


在设置时间内,


默认每隔


一段时间检测一次当前页面元素是否存在,


如果超过设置时间检测不到 则抛出异


常。



代码如下:













-


-


-


-


-


-


-


-



本文更新与2021-02-28 05:40,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/679011.html

Selenium+Python(元素定位)的相关文章