元素定位的方式很多,常用的有:

find_element_by_id

通过元素的id定位元素

find_element_by_name

通过元素的name定位元素

find_element_by_tag_name

通过元素的标签名定位元素

find_element_by_class_name

通过元素的类名定位元素

find_elements_by_xpath

通过元素在html中的位置定位元素

find_element_by_css_selector

通过元素的css定位元素

find_element_by_link_text

通过元素的链接名称定位元素

find_element_by_partial_link_text

通过元素的部分链接名称定位元素

……

什么时候选择哪种定位方法,需要根据被测网站实际情况。

本篇先介绍几个常用的元素定位方法:

通过ID定位

通过css_selector定位

通过XPath定位

通过相对位置定位


下面以谷歌浏览器为例,第一步就是查看被测模块的元素属性,鼠标右键点击被测页面,在弹出的选项中点击"检查"。

1、通过ID定位元素

下面的登录功能,选中用户名输入框后,可以看到id=“username”,可以使用find_element_by_id的方法定位元素

# 定位到用户名输入框,并输入“小明”
driver.find_element(By.ID, 'username').send_keys('小明')

同理,密码输入框通过id定位的代码则为:

driver.find_element(By.ID, 'password')

2、通过css_selector、XPath定位

像这种id=xxx、name=xxx元素属性很容易找到的,很方便做测试。但实际上代码的实现千变万化,不会每个元素都有这些属性,可以通过css_selector、XPath定位。

css和xpath定位差不多,css通过样式匹配元素, XPath是路径表达式,定位与 XPath 表达式匹配的元素。理论上来说,这两个方法都可以定位到所有元素。不熟悉html、xml、css也没关系,浏览器提供这些元素定位的功能。

下图的登录按钮,如果通过css定位,点击箭头,选中登录按钮,浏览器自动定位到了相应的代码上,此时点击鼠标右键,弹出框中选中复制——点击“复制selector"

将其粘贴到代码中:

# 通过css选择器定位登录按钮,并点击
driver.find_element(By.CSS_SELECTOR, '#contentmain > section > div.center > form > button:nth-child(6)').click()

同理,如果想用XPath定位,则复制XPath,如果运行的时候发现相对路径定位错误,则可以选择”复制完整XPath“,

# 通过XPath定位登录按钮,并点击
driver.find_element(By.XPATH, '//*[@id="contentmain"]/section/div[2]/form/button[1]').click()

3、相对定位器

有时候某个元素不好定位,但是与它相近的元素很容易定位,也可以使用相对定位的方式。

下图还是上面登录功能的代码,假设密码输入框不好定位,我们可以通过用户名输入框的位置来找到密码输入框。

如下是登录功能的html代码 ,

<form class="ant-form ant-form-horizontal"><p></p><input id="username" class="input" placeholder="用户名" required=""><p></p><input id="password" class="input" type="password" placeholder="密码" required=""><p></p><button class="button">登录</button><button class="button">注册</button></form>

密码输入框的标签<input>在用户名输入框位置的下方,代码可以这样写:

from selenium.webdriver.support.relative_locator import locate_with# 密码输入框在用户名输入框的下方
password_locator = locate_with(By.TAG_NAME, "input").below({By.ID: "username"})
# 向密码输入框输入密码
driver.find_element(password_locator).send_keys('123456Xm')

相对位置的方法还有above、near、to_left_of、to_right_of,感兴趣都可以去尝试。

最后附上测试代码:

被测网站:软件测试工具箱

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.support.relative_locator import locate_with
from webdriver_manager.chrome import ChromeDriverManagertry:service = ChromeService(executable_path=ChromeDriverManager().install())driver = webdriver.Chrome(service=service)driver.get('http://www.softwarebox.club/pages/OnlineTools/AutoLearn')driver.implicitly_wait(3)driver.maximize_window()driver.find_element(By.ID, 'username').send_keys('小明')driver.find_element(By.ID, 'password').send_keys('123456Xm')# 通过XPath定位登录按钮,并点击driver.find_element(By.XPATH, '//*[@id="contentmain"]/section/div[2]/form/button[1]').click()time.sleep(3)assert driver.current_url == 'http://www.softwarebox.club/', '用例不通过'print('用例通过')except Exception as e:print('用例执行失败')print(e)

运行结果:

用例通过Process finished with exit code 0

上一篇:(一) selenium自动化测试环境搭建_要开朗的spookypop的博客-CSDN博客

下一篇:https://blog.csdn.net/sinat_23377479/article/details/126119955

(二) selenium元素定位(上)相关推荐

  1. Selenium元素定位方法大全

    目录 一.背景 二.浏览器定位元素 三.Selenium元素定位代码 3.1 通过id定位 3.2 通过class定位 3.3 通过name定位 3.4 通过tagname定位 3.5 通过link_ ...

  2. python学习的一个定位_python学习之——selenium元素定位

    web自动化测试按步骤拆分,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告. 其中定位元素尤为关键,此篇是使用webdriver通过页面各个 ...

  3. 面试被问:Selenium元素定位不到问题,如何回答?

    1.maven有什么作用? 最常用的maven相关功能大概以下几种: a. 管理jar依赖 b. 构建项目(打包.编译等) c. 发布项目(共享.上传至服务器,供他人使用) Maven用配置文件的方式 ...

  4. python xpath定位打印元素_python基础教程:8种selenium元素定位的实现

    前言 selenium是一个非常厉害的爬虫利器,不,简直是神器了,它可以自动的控制浏览器,但是你得告诉浏览器,你想干嘛,爬哪里,这时候就要用到元素定位了,在HTML中都有着不同的标签和属性,selen ...

  5. java8种定位_python基础教程:8种selenium元素定位的实现

    前言 selenium是一个非常厉害的爬虫利器,不,简直是神器了,它可以自动的控制浏览器,但是你得告诉浏览器,你想干嘛,爬哪里,这时候就要用到元素定位了,在HTML中都有着不同的标签和属性,selen ...

  6. 解决selenium版本过时 和 selenium - 元素定位

    # selenium模板# @Time : 2022/6/29 16:40# (1)导入selenium from selenium import webdriver from selenium.we ...

  7. 【小程序自动化Minium】二、元素定位-Page接口中的 get_element() 与 get_elements()

    UI自动化中的重要工作就是元素定位了,高效精准的定位方法可以让工作事半功倍. 在过去的一段web自动化经历中,使用的selenium库支持了多种定位方法,我们可以利用这些定位方法来做进一步封装,写出符 ...

  8. python selenium 元素定位和页面操作

    目录 一.浏览器操作 二.简单对象的定位 三.操作测试对象 四.鼠标事件 五.键盘事件 六.获取页面的title和url 七.设置等待时间 八.定位一组对象 九.层级定位 十.多表单切换 十一.多窗口 ...

  9. python selenium 元素定位_python3+selenium入门04-元素定位

    我们在对浏览界面做操作时,比如点击按钮,搜索框输入内容.都需要把鼠标挪过去,然后再点击,或者输入内容.在selenium操作时也是一样的.需要先对元素进行定位,然后才能进行操作.可以借助浏览器的开发者 ...

最新文章

  1. pytorch 查看gpu cuda版本
  2. Integer判断相等,到底该用==还是equals
  3. Spring Cloud:多网卡问题
  4. 如何在Windows 8中更改登录屏幕的颜色
  5. Markdown绘制UML图
  6. 抱团股大跌,亏了谁的钱?
  7. 《微服务设计》(一)---- 微服务
  8. TeeChart基础使用手册
  9. 金融网络安全和反欺诈方法论,金融新兴技术成熟度几何?
  10. 用Java编程开发“六级单词强化记忆”游戏
  11. 典型分布式计算技术的分析和比较
  12. 2021年盘州市高考成绩查询,盘州市第一中学2021年招生代码
  13. 大坑:c++如何输入带空格的字符串?
  14. RK系列开发板音频驱动适配指南(一)
  15. 适用于火车头7.6的翻译插件-亲测10000篇文章稳定不报错
  16. 【论文阅读】让数据库听懂人话(Text-to-SQL)
  17. 2013.02.13——笔记
  18. 黑莓StreamConnection中deviceside参数的使用
  19. CDR文件如何转为AI文件
  20. 【面试题】网易互娱(游戏)2020校招在线笔试-游戏研发第一批[水平线]

热门文章

  1. 匿名者组织公布100个即将攻击的中国政府网站目标
  2. java基础入门ppt_Java基础入门.ppt
  3. Android数字游戏之数独(自动随机生成不同难度的数独)
  4. 你越牛逼,感情就越纯粹
  5. 商品详情页显示商品的详细信息
  6. 单片机高阻态输入和上拉输入
  7. Qt 鼠标事件 与 键盘事件
  8. IDC:紫光收购华三通信公司和惠普中国区企业业务
  9. 历届试题 核桃的数量 【水】
  10. 使用USB转TTL串口板和ST-LINK调试下载器给STM32单片机下载程序