selenium常见的元素定位方法
一、获取元素
1)通过谷歌浏览器自动的工具访问百度首页,我们可以看到,页面上的元素都是由一行行的代码组成的,它们之间有层级地组织起来,每个元素之间都有不同的标签和值,我们可以通过这些不同的标签和值来找到这些元素。
如下图所示,通过定位工具,我们定位到“百度一下”搜索框的元素了。
2)webdriver提供了八种定位方式,分别是
- 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=“su”,所以可以得知 driver.find_element_by_id(“su”)
2)使用find_element_by_name方式定位元素
HTML规定name来指定元素的名称,因此它的作用更像是人名,name的值在页面中可以不唯一,通过定位工具定位到百度搜索输入框的name值为“wd”
所以可以得知driver.find_element_by_name(“wd”)
3)使用find_element_by_xpath方式定位元素
这里要介绍一下如何获取页面元素的xpath路径的方法,如果你是大神可以自己写,如果跟作者一样很喽,可以通过开发者工具获取,选择元素右击->Copy->Copy Xpath,可以直接拷贝到xpath路径.
所以可以得知driver.find_element_by_xpath(“//*[@id=‘kw’]”)
4)使用find_element_by_link_text和find_element_by_partial_link_text方式定位元素
通过文字链接来定位元素,他们两个很相像,功能也很类似,但是他们一个是匹配全部,一个是匹配部分,可以参考下图。
所以可以得知driver.find_element_by_link_text(“贴吧”)
三、实例
参考了这么多方法来定位元素,下面来看看这个登录百度贴吧的实例
#coding=utf-8
from selenium import webdriver
import time driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.find_element_by_name("tj_trtieba").click()
driver.find_element_by_name("kw1").send_keys("三星S8")
time.sleep(2)
driver.find_element_by_link_text("进入贴吧").click()
time.sleep(2)
driver.find_element_by_xpath("//*[@id='com_userbar']/ul/li[4]/div/a").click()
time.sleep(1)
driver.find_element_by_id("TANGRAM__PSP_11__footerULoginBtn").click()
time.sleep(2)
driver.find_element_by_id("TANGRAM__PSP_11__userName").clear()
driver.find_element_by_id("TANGRAM__PSP_11__userName").send_keys("xxxxx")
time.sleep(2)
driver.find_element_by_id("TANGRAM__PSP_11__password").clear()
driver.find_element_by_id("TANGRAM__PSP_11__password").send_keys("xxxxx")
time.sleep(2)
driver.find_element_by_id("TANGRAM__PSP_11__submit").click()
driver.quit()
下面再推荐一个新手练习定位元素的网站:http://sahitest.com/demo/index.htm
最新文章
- 读取Simulink中Dataset类型的数据
- (01-02) odoo8.0_Ubuntu14.04_nginx反代理设置
- (转)java中的进程与线程
- java jps命令
- easyui 中重复加载两次url
- Android ADT中增大AVD内存后无法启动:emulator failed to allocate memory 8 (转)
- 在CentOS 7中安装与配置Tomcat-8方法
- 怎样用JS来添加CSS样式
- UVA 11928 The Busy Dog
- Entity Framework技巧系列之十 - Tip 37 - 41
- Unbutu14.04 切换ROOT用户后无法启用音频
- Python中List和Tuple类型
- confluence搭建详情
- shc/unshc加/解密shell脚本
- Crypto支付宝模块的安装
- .htaccess实现php网站伪静态
- mysql 优化配置参数(my.cnf)
- Struts2学习:Action使用@Autowired注入为null的解决方案
- git删除提交历史
- [代码]--IIS发布网站浏览之后看到的是文件目录 &; Internal Server Error 处理程序“ExtensionlessUrlHandler-ISAPI-4.0_64bit”在其模块列表中有一个错误模块“IsapiModule” 解决方法 &; App_global.asax.pduxejp_.dll”--“拒绝访问。 ”
热门文章
- nodejs + webpack4 + babel6 结合写Chrome浏览器插件记录(2)
- Android 隐藏顶部菜单栏
- 19.yield和send的区别
- pytorch中DataLoader, DataSet, Sampler之间的关系
- 记springboot + MP +Hikari动态数据源配置
- vue-cli项目中使用axios
- VS Code 解决 因为在此系统上禁止运行脚本
- MySQL之非空约束(NOT NULL)
- Jmeter基础学习-下载及安装
- Redis 千万不要乱用KEYS命令,不然会挨打的