python selenium 元素定位(三)

上两篇的博文中介绍了python selenium的环境搭建和编写的第一个自动化测试脚本,从第二篇的例子中看出来再做UI级别的自动化测试的时候,有一个至关重要的因素,那就是元素的定位,只有从页面上找到这个元素,我们从能对这个元素进行操作,那么我们下来看看如何来定位元素。

selenium 提供了8中元素定位的方法(大家要学习元素的定位,首先可以学习下前端的基础知识,这样有利于我们学习自动化测试,大家可以看一下:http://www.runoob.com/)

  • 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

下面我们详细的介绍一下,每个方法的含义以及每个方法的使用。

1.find_element_by_id 根据标签id定位

示例HTML代码:

<html>
 <body>
   <input id="kw" name="username" type="text" />
   <input name="password" type="password" />
   <input name="continue" type="submit" value="Login" />
 </body>
<html>

网页需要通过开发者工具,打开浏览器按F12获取页面元素,我们已经看到上述的页面html代码,我们现在要查找id="kw"的元素

driver.find_element_by_id(‘kw‘)  #通过id定位

2.find_element_by_name 根据标签的name定位

driver.find_element_by_name(‘username‘)  #通过name定位

3.find_element_by_xpath 根据xpath定位

find_element_by_xpath(//*[@id="kw"])

这里要介绍一下如何获取页面元素的xpath路径的方法,如果你是大神可以自己写,如果跟作者一样很喽,可以通过开发者工具获取,选择元素右击->Copy->Copy Xpath,可以直接拷贝到xpath路径.

4.find_element_by_link_text和find_element_by_partial_link_text 通过文字链接来定位元素,他们两个很相像,功能也很类似,但是他们一个是匹配全部,一个是匹配部分。

给我们之前的示例代码增加一段,我们来看看如何定位

<html>
 <body>
   <input id="kw" name="username" type="text" />
   <input name="password" type="password" />
   <input name="continue" type="submit" value="Login" />
   <div id="u1">
   <a href="http://news.baidu.com" name="tj_trnews" class="mnav">新闻</a>
   <a href="http://www.hao123.com" name="tj_trhao123" class="mnav">hao123</a>
   <a href="http://map.baidu.com" name="tj_trmap" class="mnav">地图</a>
   <a href="http://v.baidu.com" name="tj_trvideo" class="mnav">视频</a>
   <a href="http://tieba.baidu.com" name="tj_trtieba" class="mnav">贴吧</a>
   <a href="http://xueshu.baidu.com" name="tj_trxueshu" class="mnav">学术</a>
 </body>
<html>

下面我们用两种方法来定位一下《新闻》这个元素

通过来find_element_by_link_text定位

#-*- coding:utf-8 -*-
import time
from selenium import webdriver
driver  =  webdriver.Chrome()
driver.maximize_window()
driver.get("file:///C:/Users/hunk/Desktop/id.html")
driver.find_element_by_link_text(‘新闻‘).click()
time.sleep(3)
driver.quit()   #退出浏览器

定位效果:

通过来find_element_by_partial_link_text定位

5.find_element_by_tag_name根据标签的名字定位,这种方法很不使用,因为一个页面的中的标签的名字重复度太早,定位起来太不容易。

driver.find_element_by_tag_name("input")

6.find_element_by_class_name通过class name 定位

<html>
 <body>
  <p class="content">Site content goes here.</p>
</body>
<html>
driver.find_element_by_class_name(‘content‘)  #通过class name 定位

7.find_element_by_css_selector 根据元素属性来定位,这个方法在实际过程中比较实用,而且很简单,下面我们先看一下语法,这里有一个比较关键点就是,在这个定位的方法是可以写正则表达式来定位元素,然后在写一个实例来定位,实例我们采用百度网站来定位,然后搜索selenium关键字。

<html>
 <body>
  <p class="content">Site content goes here.</p>
</body>
<html>

定位语法

driver.find_element_by_css_selector("p[class=\"content\"]")  #根据元素属性

示例:

#-*- coding:utf-8 -*-
import time
from selenium import webdriver
driver  =  webdriver.Chrome()
driver.maximize_window()
driver.get("http://www.baidu.com")
driver.find_element_by_css_selector("input[id=\"kw\"]").send_keys(‘selenium‘)  #定位输入框输入selenium
driver.find_element_by_css_selector("input[type=\"submit\"]").click() #定位搜索按钮点击按钮,属性选择type
time.sleep(5)
driver.quit()   #退出浏览器

来看一下动画效果吧

其实元素的定位很简单,只是实际过程中定位的html页面有一些特殊的地方,只要我们拆解分析,自然也难不倒我们。

下面这几个方法返回的结果是列表,跟单个元素定位一样,只是返回的结果不同,这里就不详细介绍了。

  • find_elements_by_id
  • 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
时间: 2025-01-02 14:26:17

python selenium 元素定位(三)的相关文章

Python+Selenium元素定位不到的问题及解决办法

在做Web自动化测试的时候经常会遇到元素定位不到的问题,结合实例总结一下原因和解决方法: 1.由于iFrame或者Frame的原因无法定位 实例:163邮箱登录页面,发现邮箱和密码的inputbox识别不到,登录btn也识别不到 初始脚本: 原因分析: 查看页面发现是这三个元素是嵌入的iframe里边的,WebDriver只能识别一个页面中的元素,对于嵌入页面的元素是无法直接识别到的,如下图: 解决方案: 当元素处于iframe中,需要先跳转到iframe中才能被识别,如下: 调用_switch

python+selenium元素定位之XPath学习01

参考文档1:https://www.w3school.com.cn/xpath/xpath_syntax.asp 参考文档2:https://www.runoob.com/xpath/xpath-tutorial.html XML 实例文档 我们将在下面的例子中使用这个 XML 文档: <?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book> <title

python+selenium元素定位之XPath学习02

XPath 语法 XPath 使用路径表达式来选取 XML 文档中的节点或节点集.节点是通过沿着路径 (path) 或者步 (steps) 来选取的. XML 实例文档 我们将在下面的例子中使用这个 XML 文档. 实例 <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book> <title lang="eng">Harry Potter&l

python selenium系列(三)常用操作类型及方法

一 前言 开展WEB UI自动化的核心思路,无非就是找到元素,然后操作元素这两个内容.在python selenium系列(二)元素定位方式一文中,已经介绍了如何找到元素这项技能,本文将介绍第二项内容,即如何操作已经找到的元素. 二 操作方法分类 总体来说,可以将操作大体分成四类,即浏览器操作.键盘操作.鼠标操作.js脚本. 1.  浏览器常用操作方法: 方法 描述 driver.maximize_window() 窗口最大化 driver.back() 页面返回 driver.forward(

Selenium元素定位学习教程

无论哪一种自动化测试的驱动框架(基于B/S,桌面应用,还是手机App).都应当具有一套优秀的元素定位技术.通常的自动化测试流程也可以简单的归结为是一个从被测试程序中识别或是定位元素以及执行操作和验证元素的过程.这一篇我们就一起学习Selenium以及它是如何定位DOM元素的.本文将会介绍如下内容: Selenium DOM 主要的定位方式. Selenium 如何扩展元素定位方式. 辅助浏览器工具 (一)Selenium DOM主要定位方式 上一篇中,我们介绍了WebDriver和 WebEle

selenium元素定位(三)

使用selenium就不可避免的要提到界面元素定位,通过元素定位来实现一系列的逻辑操作. selenium提供了8中元素定位的方式: id.name.class name.tag name.link text.partial link text.xpath.css selector. 其中使用xpath来根据id或class来定位元素的可以解决大部分问题. 这8中定位方式在python selenium中使用的对应具体方法为: 1 find_element_by_id() 2 find_elem

selenium+python之元素定位方式介绍

网页自动化测试最基本的要求就是要定位到各个元素,然后才能对该元素进行各种操作(输入,点击,清除,提交等),所以今天来总结下Selenuim+Python最基本的几种定位方式及实例说明, 以百度搜索输入框为例,用谷歌浏览器具体说明各个定位方式的用法. 1.导入selenium包的webdriver方法 输入 from selenium import webdriver 2.从 time 模块中引入sleep函数,使用sleep函数可以让程序休眠 输入 from time import sleep

第三章 selenium元素定位

本篇来介绍环境搭建 阅读目录 selenium定位方法 html demo 通过id定位 通过name定位 通过tag name定位 通过class name定位 通过link text定位 通过partial link text定位 通过xpath定位 通过css selector定位 selenium定位方法 id name class name tag name link text partial link text xpath css selector 这8种定位方式在Python se

selenium元素定位

1.元素定位 在本章中,我们将讨论 u 使用浏览器工具来检查页面中元素的结构 u 使用findElement方法定位元素 u 使用findElements方法来定位元素 u 定位链接 u 通过标签名称定位元素 u 使用CSS选择器定位元素 u 使用XPath定位元素 u 使用文本定位元素 u 使用高级CSS选择器定位元素 u 使用jQuery选择器 u 定位表格的行和列 u 定位表格中的子元素 1.1.介绍 成功的自动化GUI(图形用户界面)测试取决于从被测试的应用程序中识别和定位GUI元素,然