[Python 应用: 爬虫] Selenium 定位元素方法

本文内容摘自:https://selenium-python.readthedocs.io/locating-elements.html

定位元素有很多种方式,你可以选择适合你使用情况的。Selenium 提供如下几种定位元素的方式:

  • find_element_by_id
  • find_element_by_name
  • find_element_by_xpath
  • find_element_by_link_text
  • find_element_by_partial_link_text
  • find_element_by_tag_name
  • find_element_by_class_name
  • find_element_by_css_selector

上述定位方式只定位页面中的拥有同样类型第一个元素,如果想定位同样名字或同样名字的所有元素,以下方式可以采用:(返回的是一个列表,这样的话也意味着你可以定位列表中的任何一个元素,比如可用于有同样的class name 的元素的的定位,通过 class name定位所有同样class name的元素列表,再指定列表中的某个元素就 能得到你想要的元素了)

  • find_elements_by_name
  • find_elements_by_xpath
  • find_elements_by_link_text
  • find_elements_by_partial_link_text
  • find_elements_by_tag_name
  • find_elements_by_class_name
  • find_elements_by_css_selector

除了上面的方式外,还有两种可选择的方式:find_element and find_elements. 但是这两种方式要导入 By ,如下例子:

from selenium.webdriver.common.by import By

driver.find_element(By.XPATH, ‘//button[text()="Some text"]‘)
driver.find_elements(By.XPATH, ‘//button‘)

通过By 的方式,下面的属性是可以通过By方式调用来定位元素的:
ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"

此处为分割线--------------------------------------------------------------------------------------------------------

下面将分别举例说明每种定位方式:

一、通过 Id 定位元素

这种方式是最好理解的。如果你已经知道某个元素的Id属性,直接可以用Id定位到这个元素。但是在有多个元素都拥有这个Id属性的时候,你通过find_element_by_id只能返回第一个匹配到的元素。

下面的方式也会有同样的问题,往下就不会赘述这个问题。如果匹配不到的话,会返回NoSuchElementException。

看个例子,网页代码如下:

form 元素就可以通过如下方式定位到:

login_form = driver.find_element_by_id(‘loginForm‘)

二、通过 Name 定位元素

第二种方式也是很好理解的。还是上面的网页代码,如果想过定位到 username & password 两个元素,就可以通过 find_element_by_name 的方式

username = driver.find_element_by_name(‘username‘)
password = driver.find_element_by_name(‘password‘)

假设网页代码中有如下:

可以看到,有两个元素有同样的名字属性。我们通过 find_element_by_name的方式实际只能定位到 Login 。

 Login = driver.find_element_by_name(‘continue‘)

如果我们想定位到Clear 怎么办呢? 可以通过 find_elements_by_name 的方式。上面说过通过这种方式返回的是一个list, 那个对应list 第二个元素就是我们要的Clear 了。

Clear = driver.find_elements_by_name(‘continue‘)[1]

三、通过 XPath 定位元素

四、通过 Link Text 定位超链接

五、通过 Tag Name 定位元素

六、通过 Class Name 定位元素

七、通过 CSS 选择器来定位元素

原文地址:https://www.cnblogs.com/dream-on-all-in/p/11123531.html

时间: 2024-10-05 03:08:03

[Python 应用: 爬虫] Selenium 定位元素方法的相关文章

[python爬虫] Selenium常见元素定位方法和操作的学习介绍

这篇文章主要Selenium+Python自动测试或爬虫中的常见定位方法.鼠标操作.键盘操作介绍,希望该篇基础性文章对你有所帮助,如果有错误或不足之处,请海涵~ 前文目录: [Python爬虫] 在Windows下安装PhantomJS和CasperJS及入门介绍(上) [Python爬虫] 在Windows下安装PIP+Phantomjs+Selenium [Python爬虫] Selenium自动访问Firefox和Chrome并实现搜索截图 [Python爬虫] Selenium实现自动登

selenium+python定位元素方法

定位元素方法 官网地址:http://selenium-python.readthedocs.org/locating-elements.html        这里有各种策略用于定位网页中的元素(locate elements),你可以选择最适合的方案,Selenium提供了一下方法来定义一个页面中的元素: find_element_by_id find_element_by_name find_element_by_xpath find_element_by_link_text find_e

定位元素方法

一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locating-elements.html 这里有各种策略用于定位网页中的元素(locate elements),你可以选择最适合的方案,Selenium提供了一下方法来定义一个页面中的元素: find_element_by_idfind_element_by_namefind_element_by_xpathfind_element_by_link_textfind_element_b

selenium定位元素的八种方法

web driver提供了八种元素定位的方法: id, name, class name, tag name, link text, partial link text, xpath, css selector 如百度首页,百度一下按钮的元素信息 <input type="submit" id="su" value="百度一下" class="bg s_btn"> 百度首页新闻的页面的元素信息 <a href

WebDriver定位元素方法

如果把页面上的元素看作人的话,在现实世界如何找到某人呢?方法有三: 一.通过人本身的属性,例如他的姓名,手机号,身份证号,性别,这些可区别他人的属性.在web页面上的元素也有这些属性,例如,id.name.class name.tag name等. 二.在找查某人的时候可以通过位置属性,例如,x国.x市.x路.x号.Xpath和CSS就提供了这种以标签名为层级关系的定位方式. 三.可以借助相关他人的属性来找到某人,例如,我没有小明的联系方式,但我有他爸爸的手机号,那么通过他爸爸手机号也可以找到小

Selenium2+python自动化8-SeleniumBuilder辅助定位元素

前言 福利来了,对于用火狐浏览器的小伙伴们,你还在为定位元素而烦恼嘛? 上古神器Selenium Builder来啦,哪里不会点哪里,妈妈再也不用担心我的定位元素问题啦!(但是也不是万能,基本上都能覆盖到) 一.安装Selenium Builder 在火狐浏览器的附加组件中搜索添加Selenium Builder即可.安装好后如下图所示: 二.直接运用 1.打开你要测试的URL或者打开插件后输入你要测试的URL,如下图 2.点击后弹出一个弹窗,如下图: 注:如果你是直接在你要测的网页页面打开这个

appium+python自动化49-yaml管理定位元素

如何高效管理定位元素,这个是很有学问的问题,也是面试必问的[以下纯属个人观点,勿喷!]. 有的人用xml管理页面定位元素,这种逼格略高,但是小编认为学习成本大,贼麻烦. 有的人提到用excel管理页面定位元素,这种略显逼格,至少做到了数据分离,但是读取excel太慢,不够高效,还得在excel里面维护,忒麻烦. 有的人说把定位元素放数据库管理,这种除了装逼,没觉得有多高效,当然有小伙伴提到接口测试数据量比较大的时候,这种方法还可以. 有的人用pageobject模式,直接在page类写定位方法,

selenium 定位元素

findElement()方法:当开始寻找符合指定条件的元素时,它将查询整个DOM,然后返回第一个找到的匹配元素. By id:通过元素ID属性定位元素//driver.findElement(By.id("XXXX")); By name: 通过元素Name属性定位元素//driver,findElement(By.name("XXXX")); By className:通过元素classname属性定位元素//driver.findElement(By.clas

python+selenium 定位元素

一.安装python1.配置环境变量c:\python27:C:\Python27\Scripts2.验证pyton是否可用,在cmd里面输入python没报错就行 二.安装selenium库4.安装selenium:在cmd里面,输入:pip install selenium 三.对应于webdriver中的定位方法分别是: driver.find_element_by_name()--最常用,简单 driver.find_element_by_id()--最常用,简单 driver.find