Selemium - 元素的识别

注意: 本文使用的是火狐浏览器的webdriver,要求必须是 54 以下版本,getckodriver也最好不要下载最新的版本!

一个简单脚本:
# coding=utf-8

from selenium import webdriver
import time

# 选择浏览器,IE、谷歌、火狐
browser = webdriver.Firefox()
# 打开百度首页
browser.get("http://www.baidu.com")
# 定位搜索框并输入“selenium”
# 一个控件有若干属性id、name(也可以用其它方式定位),百度输入框的id叫kw 
browser.find_element_by_id("kw").send_keys("selenium")
# 为了清晰的看到这个过程的来龙去脉,让浏览器休眠几秒
time.sleep(3)
# 定位“搜索”按钮并点击
# 搜索的按钮的id叫su,点击搜索按钮用click() 
browser.find_element_by_id("su").click()
time.sleep(3)
# 关闭浏览器,释放资源
browser.quit()

在这里插入图片描述
对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象。
注意:不管用那种方式,必须保证页面上该属性的唯一性!

webdriver提供了一系列的对象定位方法,常用的有以下几种:
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_tag_name():但是此种方法不一定成功
find_element_by_xpath()
find_element_by_css_selector()

以百度输入框为例,可以有以下几种定位方式:

#通过id方式定位
browser.find_element_by_id("kw").send_keys("selenium")
#通过name方式定位
browser.find_element_by_name("wd").send_keys("selenium")
#通过tag name方式定位
browser.find_element_by_tag_name("input").send_keys("selenium"):不能成功,因为tag_name是input标签,不唯一!
#通过class name方式定位
browser.find_element_by_class_name("s_ipt").send_keys("selenium")
#通过CSS方式定位
find_element_by_css_selector("#kw")
#XPath定位
browser.find_element_by_xpath("//*[@id='kw']").send_keys("selenium")
  • 打开开发者工具,定位到搜索框,发现这里的 idnameclass 都是唯一的,所以可以成功,所以上述代码可以运行成功并调开浏览器。
    在这里插入图片描述
  • 百度搜索框的 tag_nameinput 标签,所以我们把元素识别方式改为 tag_name 来试一下,如下图:
# coding=utf-8

from selenium import webdriver
import time

# 选择浏览器,IE、谷歌、火狐
browser = webdriver.Firefox()
# 打开百度首页
browser.get("http://www.baidu.com")
# 定位搜索框并输入“selenium”
# 使用tag_name定位搜索框
browser.find_element_by_tag_name("input").send_keys("selenium") #不能成功!!!!
# 为了清晰的看到这个过程的来龙去脉,让浏览器休眠几秒
time.sleep(3)
# 定位“搜索”按钮并点击
# 搜索的按钮的id叫su,点击搜索按钮用click()
browser.find_element_by_id("su").click()
time.sleep(3)
# 关闭浏览器,释放资源
browser.quit()

在这里插入图片描述
此时发现webdriver是可以把浏览器调开的,但是很明显发现在定位搜索框的时候定位不出来,导致后面操作没法进行,回到编辑器窗口发现程序报错,是因为input标签不唯一!

除了上面的几种元素定位方式之外,还有另外两种对文字链接的识别:
  • link text定位
# coding = utf-8
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://www.baidu.com")
browser.find_element_by_link_text("hao123").click()
browser.quit()

在这里插入图片描述

  • Partial link text定位
# coding = utf-8
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://www.baidu.com")
browser.find_element_by_partial_link_text("hao").click()
browser.quit()

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值