时间:2021-05-22
本文实例讲述了Selenium定位元素操作。分享给大家供大家参考,具体如下:
Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。
在前面一篇《Selenium基本用法》中简单记录了Selenium的使用,接下来记录一下元素的定位,Selenium提供了多种策略来定位页面中的元素,Selenium提供了以下方法来定位页面中元素,你可以根据自己的喜好来进行选择:
值得注意的是,上面方法只会匹配查找只会获取第一个元素。除了上面这些查找单个元素的方法之外,Selenium还定义查找多个元素的方法:
除了上面给出的公有方法之外,Selenium还提供了两种私有方法可能对页面对象中的定位器有用,这两个私有方法是:find_element和find_elements:
from selenium.webdriver.common.by import Byelement = driver.find_element(By.XPATH,'//*[@id="su"]')elements = driver.find_elements(By.XPATH,'//button')下面是By可用的属性:
ID = 'id'NAME = 'name'XPATH = 'xpath'LINK_TEXT = '链接内容'PARTIAL_LINK_TEXT = '部分链接内容'TAG_NAME = '标签名称'CLASS_NAME = '类名'CSS_SELECTOR = 'CSS选择器'通过ID定位
当你知道元素的ID属性时,你可以使用它,使用此策略,将返回ID属性值与该匹配的第一个元素。如果没有元素匹配到此ID属性,将会引发NoSuchElementException错误,举个栗子,有这样一个数据源:
<input id="login_id" type="text"/>我们知道了这个元素的ID,我们可以这样进行定位:
element = driver.find_element_by_id('login_id')通过name定位
当你知道元素的name属性时,你可以使用它,使用此策略,将返回name属性值与该匹配的第一个元素。如果没有元素匹配到此name属性,将会引发NoSuchElementException错误,举个栗子,有这样一个数据源:
<input name="login" type="text"/>我们知道了这个元素的name,我们可以这样进行定位:
element = driver.find_element_by_name('login')通过XPath定位
XPath是用于在XML文档中查找节点的语言,由于XML可以是HTML的实现,因此Selenium用户可以利用这种强大的语言来定位其Web应用程序中的元素。XPath扩展了通过id和name属性定位的简单方法,并打开了各种新的可能性,例如在页面中查找第三个复选框。举个栗子,有这样一个数据源:
<html> <body> <form id="loginForm"> <input name="username" type="text" /> <input name="password" type="password" /> <input name="continue" type="submit" value="Login" /> <input name="continue" type="button" value="Clear" /> </form></body><html>我们可以这样进行定位:
user_element = driver.find_element_by_xpath("/html/body/form/input[@name='username']")或者
user_element = driver.find_element_by_xpath("/html/body/form/input")或者
user_element = driver.find_element_by_xpath('//input[1]')或者
user_element = driver.find_element_by_xpath("//input[@name='username'][@type='text']")通过链接内容定位
当你知道链接元素的内容时,你可以使用它,使用此策略,将返回链接内容与该匹配到的第一个元素。如果没有元素匹配到此链接内容,将会引发NoSuchElementException错误,举个栗子,有这样一个数据源:
<html> <body> <p>Are you sure you want to do this?</p> <a href="continue.html" rel="external nofollow" rel="external nofollow" >Continue</a> <a href="cancel.html" rel="external nofollow" >Cancel</a></body><html>其中<a href="continue.html" rel="external nofollow" rel="external nofollow" >Continue</a>元素可以这样定位:
element = driver.find_element_by_link_text('Continue')或者
element = driver.find_element_by_partical_link_text('Con')通过标签名称定位
当你知道标签的名称时,你可以使用它,使用此策略,将返回标签名称与该匹配到的第一个元素。如果没有元素匹配到此标签名称时,将会引发NoSuchElementException错误,举个栗子,有这样一个数据源:
<html> <body> <h1>Welcome</h1> <p>Site content goes here.</p></body><html>我们可以这样对<p>元素进行定位:
element = driver.find_element_by_tag_name("p")通过类名进行定位
当你知道类名的时候,你可以使用它,使用此策略,将返回类名与该匹配到的第一个元素。如果没有元素匹配到此类名称时,将会引发NoSuchElementException错误,举个栗子,有这样一个数据源:
<html> <body> <p class="content">Site content goes here.</p></body><html>我们可以这样对<p>元素进行定位:
element = driver.find_element_by_class_name('content')通过CSS选择器进行定位
当你想通过CSS选择器语法找到一个元素时,你可以使用它,使用此策略,将返回匹配CSS选择器的第一个元素。如果没有元素匹配到此CSS选择器时,将会引发NoSuchElementException错误,举个栗子,有这样一个数据源:
<html> <body> <p class="content">Site content goes here.</p></body><html>我们可以这样对<p>元素进行定位:
element = driver.find_element_by_css_selector('body p')更多关于Python相关内容感兴趣的读者可查看本站专题:《Python Socket编程技巧总结》、《Python URL操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
操作元素定位元素,用js来实现是个不错的选择,下面有个示例,需要的朋友可以看看?1234567891011121314151617181920212223242
弹出框有两种:页面弹出框(可定位元素能操作)、Windows弹出框(不能直接定位)一、页面弹出框等待弹出框出现之后,定位弹出框,操作其中元素如: driver=
当我们想让Selenium自动地操作浏览器时,就必须告诉Selenium如何去定位某个元素或一组元素,每个元素都有着不同的标签名和属性值,Selenium提供了
一、定位元素的8种方式1、方法介绍定位一个元素定位多个元素含义find_element_by_id()find_elements_by_id()通过元素id定位
声明定位元素:position属性值设置除默认值static以外的元素,包括relative,absolute,fixed。平台:win/IEwin/FFz-i