内容简介:Python Selenium 部分API详细使用方法(一)
*********************************************************************************************
一、浏览器操作
1、浏览器最大化
driver.maximize_window() #将浏览器最大化显示
2、设置浏览器宽、高
driver.set_window_size(480, 800)#设置浏览器宽480、高800显示
3、控制浏览器前进、后退
driver.back()#浏览器后退 driver.forward()#浏览器前进
*********************************************************************************************
二、简单对象的定位
webdriver 提供了一系列的元素定位方法,常用的有以下几种:
- id
- name
- class name
- tag name
- link text
- partial link text
- xpath
- css selector
分别对应python webdriver 中的方法为:
- find_element_by_id()
- find_element_by_name()
- find_element_by_class_name()
- find_element_by_tag_name()
- find_element_by_link_text()
- find_element_by_partial_link_text()
- find_element_by_xpath()
- find_element_by_css_selector()
1、id 和name 定位
id 和name 是我们最常用的定位方式,因为大多数元素都有这两个属性,而且在对控件的id 和name
命名时一般使其有意义也会取不同的名字。通过这两个属性使我们找一个页面上的属性变得相当容易。比如:
#id=”gs_htif0” find_element_by_id("gs_htif0") #name=”btnK” find_element_by_name("btnK")
2、tag name 和class name 定位
比如:
#<div id="searchform" class="jhp_big" style="margin-top:-2px"> #<form id="tsf" onsubmit="return name="f" method="GET" action="/search"> find_element_by_class_name("jhp_big") find_element_by_tag_name("div")
tag name 定位应该是所有定位方式中最不靠谱的一种了,因为在一个页面中具有相同tag name 的元
素极其容易出现。3、link text 与partial link text 定位
有时候需要操作的元素是一个文字链接,那么我们可以通过link text 或partial link text 进行元素
定位。比如:#<a href="http://news.baidu.com" name="tj_news">新闻</a> #<a href="http://tieba.baidu.com" name="tj_tieba">贴吧</a> #<a href="http://zhidao.baidu.com" name="tj_zhidao">一个很长的文字连接</a> #通过link text 定位元素: find_element_by_link_text("新闻") find_element_by_link_text("贴吧") find_element_by_link_text("一个很长的文字连接") #通partial link text 也可以定位到上面几个元素: find_element_by_partial_link_text("新") find_element_by_partial_link_text("吧") find_element_by_partial_link_text("一个很长的")
当一个文字连接很长时,我们可以只取其中的一部分,只要取的部分可以唯一标识元素。一般一个页
面上不会出现相同的文件链接,通过文字链接来定位元素也是一种简单有效的定位方式。4、XPath 定位
XPath 是一种在XML 文档中定位元素的语言。因为HTML 可以看做XML 的一种实现,所以selenium 用
户可是使用这种强大语言在web 应用中定位元素。以下面一段html代码为例:
<html class="w3c"> <body> <div class="page-wrap"> <div id="hd" name="q"> <form target="_self" action="http://www.so.com/s"> <span id="input-container"> <input id="input" type="text" x-webkit-speech="" autocomplete="off" suggestwidth="501px" >
(1)使用绝对路径定位:
当我们所要定位的元素很难找到合适的方式时,都可以通这种绝对路径的方式位,缺点是当元素在很
多级目录下时,我们不得不要写很长的路径,而且这种方式难以阅读和维护。find_element_by_xpath("/html/body/div[2]/form/span/input")
(2)使用相对路径定位:
find_element_by_xpath("//input[@id=’input’]") #通过自身的id 属性定位 find_element_by_xpath("//span[@id=’input-container’]/input") #通过上一级目录的id 属性定位 find_element_by_xpath("//div[@id=’hd’]/form/span/input") #通过上三级目录的id 属性定位 find_element_by_xpath("//div[@name=’q’]/form/span/input")#通过上三级目录的name 属性定位
通过上面的例子,我们可以看到XPath 的定位方式非常灵活和强大的,XPath 可以做布尔逻辑运算,例如://div[@id=’hd’ or @name=’q’]。
当然,它的缺陷也非常明显:
1、性能差,定位元素的性能要比其它大多数方式差;
2、不够健壮,XPath会随着页面元素布局的改变而改变;
3. 兼容性不好,在不同的浏览器下对XPath 的实现是不一样的。
下面插播一下xpath的知识:
(1)路径表达式:
表达式 描述 nodename 选取此节点的所有子节点。 / 从根节点选取。 // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 . 选取当前节点。 .. 选取当前节点的父节点。 @ 选取属性。 实例
在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:
路径表达式 结果 bookstore 选取 bookstore 元素的所有子节点。 /bookstore 选取根元素 bookstore。
注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!
bookstore/book 选取属于 bookstore 的子元素的所有 book 元素。 //book 选取所有 book 子元素,而不管它们在文档中的位置。 bookstore//book 选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。 //@lang 选取名为 lang 的所有属性。 实例
在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:
路径表达式 结果 /bookstore/book[1] 选取属于 bookstore 子元素的第一个 book 元素。 /bookstore/book[last()] 选取属于 bookstore 子元素的最后一个 book 元素。 /bookstore/book[last()-1] 选取属于 bookstore 子元素的倒数第二个 book 元素。 /bookstore/book[position()<3] 选取最前面的两个属于 bookstore 元素的子元素的 book 元素。 //title[@lang] 选取所有拥有名为 lang 的属性的 title 元素。 //title[@lang='eng'] 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。 /bookstore/book[price>35.00] 选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00。 /bookstore/book[price>35.00]/title 选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00。 (2)选取未知节点
XPath 通配符可用来选取未知的 XML 元素。
通配符 描述 * 匹配任何元素节点。 @* 匹配任何属性节点。 node() 匹配任何类型的节点。 实例
在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:
路径表达式 结果 /bookstore/* 选取 bookstore 元素的所有子元素。 //* 选取文档中的所有元素。 //title[@*] 选取所有带有属性的 title 元素。 5、CSS 定位
CSS(Cascading Style Sheets)是一种语言,它被用来描述HTML 和XML 文档的表现。CSS 使用选择器来为页面元素绑定属性。这些选择器可以被selenium 用作另外的定位策略。CSS 可以比较灵活选择控件的任意属性,一般情况下定位速度要比XPath 快,但对于初学者来说比较难以学习使用,下面我们就详细的介绍CSS 的语法与使用:
例如下面一段代码:
<div class="formdiv"> <form name="fnfn"> <input name="username" type="text"></input> <input name="password" type="text"></input> <input name="continue" type="button"></input> <input name="cancel" type="button"></input> <input value="SYS123456" name="vid" type="text"> <input value="ks10cf6d6" name="cid" type="text"> </form> <div class="subdiv"> <ul id="recordlist"> <p>Heading</p> <li>Cat</li> <li>Dog</li> <li>Car</li> <li>Goat</li> </ul> </div> </div>
通过CSS 语法进行匹配的实例:
关于自动化的定位问题:
自动化测试的元素定位一直是困扰自动化测试新手的一个障碍,因为我们在自动化实施过程中会碰到
各式各样的对象元素。虽然XPath 和CSS 可以定位到复杂且比较难定位的元素,但相比较用id 和name 来
说增加了维护成本和学习成本,相比较来说id/name 的定位方式更直观和可维护,有新的成员加入的自动
化时也增加了人员的学习成本。所以,测试人员在实施自动化测试时一定要做好沟通,规范前端开发人员
对元素添加id/name 属性,或者自己有修改HTML 代码的权限。
*********************************************************************************************
以上所述就是小编给大家介绍的《Python Selenium 部分API详细使用方法(一)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Python Selenium 部分API详细使用方法(二)
- Python Selenium 部分API详细使用方法(三)
- 百度UEditor编辑器使用教程与使用方法
- AWK简单使用方法
- python 内置函数使用方法
- 栈和帧指针使用方法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
jQuery实战
Bear Bibeault、Yehuda Katz / 陈宁 / 人民邮电出版社 / 2009.1 / 49.00元
《jQuery实战》全面介绍jQuery知识,展示如何遍历HTML文档、处理事件、执行动画以及给网页添加Ajax。书中紧紧地围绕“用实际的示例来解释每一个新概念”这一宗旨,生动描述了jQuery如何与其他工具和框架交互以及如何生成jQuery插件。jQuery 是目前最受欢迎的JavaScript/Ajax库之一,能用最少的代码实现最多的功能。 点击链接进入新版: jQuery......一起来看看 《jQuery实战》 这本书的介绍吧!