Selenium定位元素操作示例

作者:喷跑的豆子 时间:2022-01-21 04:23:56 

本文实例讲述了Selenium定位元素操作。分享给大家供大家参考,具体如下:

Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。

在前面一篇《Selenium基本用法》中简单记录了Selenium的使用,接下来记录一下元素的定位,Selenium提供了多种策略来定位页面中的元素,Selenium提供了以下方法来定位页面中元素,你可以根据自己的喜好来进行选择:

  • find_element_by_id:通过ID进行匹配查找,只返回匹配到的一个元素

  • find_element_by_name:通过name进行匹配查找,只返回匹配到的一个元素

  • find_element_by_xpath:通过xpath进行匹配查找,只返回匹配到的一个元素

  • find_element_by_link_text:通过链接内容进行匹配查找,只返回匹配到的一个元素

  • find_element_by_partical_link_text:通过部分链接内容进行匹配查找,只返回匹配到的一个元素

  • find_element_by_tag_name:通过标签名称进行匹配查找,只返回匹配到的一个元素

  • find_element_by_class_name:通过class名称进行匹配查找,只返回匹配到的一个元素

  • find_element_by_css_selector:通过CSS选择器进行匹配查找,只返回匹配到的一个元素

值得注意的是,上面方法只会匹配查找只会获取第一个元素。除了上面这些查找单个元素的方法之外,Selenium还定义查找多个元素的方法:

  • find_elements_by_name:通过name进行匹配查找,返回所有匹配到的元素列表

  • find_elements_by_xpath:通过xpath进行匹配查找,返回所有匹配到的元素列表

  • find_elements_by_link_text:通过链接内容进行匹配查找,返回所有匹配到的元素列表

  • find_elements_by_partical_link_text:通过部分链接内容进行匹配查找,返回所有匹配到的元素列表

  • find_elements_by_tag_name:通过标签名称进行匹配查找,返回所有匹配到的元素列表

  • find_elements_by_class_name:通过class名称进行匹配查找,返回所有匹配到的元素列表

  • find_elements_by_css_selector:通过CSS选择器进行匹配查找,返回所有匹配到的元素列表

除了上面给出的公有方法之外,Selenium还提供了两种私有方法可能对页面对象中的 * 有用,这两个私有方法是:find_elementfind_elements


from selenium.webdriver.common.by import By
element = 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程序设计有所帮助。

来源:https://blog.csdn.net/y472360651/article/details/79659968

标签:Selenium,定位元素
0
投稿

猜你喜欢

  • Python中的wordcloud库安装问题及解决方法

    2022-04-14 21:38:43
  • SQL Server 2005:数据类型最大值

    2009-06-04 09:55:00
  • 使用MySQL Slow Log来解决MySQL CPU占用高的问题

    2024-01-25 01:43:35
  • 单页面vue引入百度统计的使用方法示例详解

    2024-05-11 09:14:23
  • tensorflow使用range_input_producer多线程读取数据实例

    2022-10-19 16:43:21
  • python实现五子棋游戏(pygame版)

    2021-09-15 16:01:42
  • PHP 解决utf-8和gb2312编码转换问题

    2024-04-29 13:56:45
  • 你是一个职业的页面重构工作者吗?

    2008-09-29 12:07:00
  • Python多进程原理与用法分析

    2023-11-30 15:26:11
  • Python实现的绘制三维双螺旋线图形功能示例

    2023-02-21 20:37:15
  • php计算两个整数的最大公约数常用算法小结

    2023-11-20 00:29:01
  • Go 语言入门之Go 计时器介绍

    2024-05-25 15:16:04
  • 解决Navicat for Mysql连接报错1251的问题(连接失败)

    2024-01-27 04:29:52
  • Pyqt实现无边框窗口拖动以及窗口大小改变

    2023-07-30 01:59:10
  • Python数学建模PuLP库线性规划实际案例编程详解

    2021-04-29 19:12:56
  • Python爬取新型冠状病毒“谣言”新闻进行数据分析

    2021-06-14 04:47:33
  • Golang Goroutine的使用

    2023-09-20 20:38:45
  • 关于Python中的编码规范

    2021-11-07 02:38:02
  • Linux下安装MySQL教程

    2024-01-19 08:05:18
  • 清除SQLServer日志的两种方法

    2024-01-18 15:34:13
  • asp之家 网络编程 m.aspxhome.com