元素
方法
示例
id
find_element_by_id('su')

driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id('su').click()
name

find_element_by_name("wd")

driver.get("http://www.baidu.com")
driver.find_element_by_name("tj_trnews").click()

class name

find_element_by_class_name()
 不常用
tagname
find_element_by_tag_name()
div form a相似的很多,也不常用 
link text
find_element_by_link_text("新闻")

river.get("http://www.baidu.com")
driver.find_element_by_link_text("新闻").click()
partial link text
find_element_by_partial_link_text("新闻")
driver.get("http://www.baidu.com")
driver.find_element_by_partial_link_text("闻").click()

xpath


绝对路径
driver.get("http://www.baidu.com")
driver.find_element_by_xpath("/html/body/div/div/div/div[3]/a[3]").click()
元素属性定位
river.get("http://www.baidu.com")
driver.find_element_by_xpath("//a[@name=\"tj_trmap\"]").click()或
driver.find_element_by_xpath("//*[@name=\"tj_trmap\"]").click()

层级与属性结合

元素本身没有可以唯一标识的属性值,如果上级元素有可以唯一标识属性的值,就可以拿来用

driver.get("http://www.baidu.com")
driver.find_element_by_xpath("//form[@id=\"form\"]/span/input").send_keys("selenium")
driver.find_element_by_xpath("//span[@class=\"bg s_btn_wr\"]/input[@id=\"su\"]").click()

使用逻辑运算符
driver.get("http://www.baidu.com")
driver.find_element_by_xpath("//input[@id=\"kw\" and @name=\"wd\"]").send_keys("selenium")
driver.find_element_by_xpath("//input[@id=\"su\" and @type=\"submit\"]").click()
右键-复制xpath
 
css 
   

.class

driver.get("http://www.baidu.com")
driver.find_element_by_css_selector(".s_ipt").send_keys("selenium")
driver.find_element_by_css_selector(".s_btn").click()

如果存在多个相同class的元素,可以通过nth-child(index)来寻找目标元素,如:

driver.find_element_by_css_selector(".mnav:nth-child(3)").click()
#id

driver.get("http://www.baidu.com")
driver.find_element_by_css_selector("#kw").send_keys("selenium")
driver.find_element_by_css_selector("#su").click()
通过标签名定位  标签名重复的概率非常大,通过这种方式很难找到想要的元素
通过属性定位

driver.get("http://www.baidu.com")
driver.find_element_by_css_selector("[id=\"kw\"][name=\"wd\"]").send_keys("selenium")
driver.find_element_by_css_selector("[id=\"su\"]").click()
组合定位

driver.get("http://www.baidu.com")
driver.find_element_by_css_selector("form[class=\"fm\"]>span>input[id=\"kw\"][name=\"wd\"]").send_keys("selenium")
driver.find_element_by_css_selector("form#form>span>input#su").click()

python selenium-2 定位元素的更多相关文章

  1. Python+Selenium自动化-定位一组元素,单选框、复选框的选中方法

    Python+Selenium自动化-定位一组元素,单选框.复选框的选中方法   之前学习了8种定位单个元素的方法,同时webdriver还提供了8种定位一组元素的方法.唯一区别就是在单词elemen ...

  2. Python+Selenium自动化-定位页面元素的八种方法

    Python+Selenium自动化-定位页面元素的八种方法   本篇文字主要学习selenium定位页面元素的集中方法,以百度首页为例子. 0.元素定位方法主要有: id定位:find_elemen ...

  3. selenium配置文件定位元素

    之前的写的selenium的定位元素进行测试的代码,现在一运行就报找不到元素了,之前运行的好好的. 我查看网站源码后,发现网站元素确实是变了,原来的定位的xpath代码压根全部找不到了,于是 想着,以 ...

  4. Python+selenium(定位一组元素)

    我们熟知Webdriver有8种定位元素的方法,但是当需要定位一组元素的时候,可以使用Webdriver提供的与之对应的8种用于定位一组元素的方法,分别是: find_elements_by_id() ...

  5. python selenium八大定位方法

    一.定位方法 注意:元素属性必须唯一存在 #id定位 find_element_by_id() #name定位 find_element_by_name() #class_name定位 find_el ...

  6. python selenium(定位方法)

    一.定位方法 注意:元素属性必须唯一存在 #id定位 find_element_by_id() #name定位 find_element_by_name() #class_name定位 find_el ...

  7. Selenium3+python几种定位元素的方法

    学习小结: 这里使用ChromeV73+web driver 2.46 #几种定位方式: #Autotest.py from selenium import webdriver from seleni ...

  8. selenium 难定位元素,时间插件,下拉框定位,string

    1.元素定位 ID定位元素: findElement(By.id(“”)); 通过元素的名称定位元素: findElement(By.name(“”)); 通过元素的html中的位置定位元素: fin ...

  9. selenium css定位元素

    CSS 选择器: 常见符号: #表示 id选择器 .表示 class选择器 >表示子元素,层级 一个空格也表示子元素,但是是所有的后代子元素,相当于 xpath 中的相对路径 一.css:属性定 ...

  10. python+selenium页面自动化 元素定位实际遇到的各种问题(持续更新)

    1.class属性有空格  (已验证) 当classname 中存在空格的时候,直接使用find_element_by_class_name时,会显示定位失败,此时,需要将classname中的空格替 ...

随机推荐

  1. hibernate级联 cascade属性(转)

    在Hibernate中,针对持久化实体的配置文件中有Cascade这样一个属性,顾名思义就是级联,也就是说在操作当 前实体时,针对当前实体的操作会影响到相应配置的关联实体.比如针对当前实体进行保存操作 ...

  2. Selenium+java上传文件

    自动化调用: AutoIT脚本编译成可执行文件后,放在本地的某一个目录下 上传文件时,首先定位到[上传]字样文本,点击该按钮 执行编辑后的可执行文件,实现文件上传 一.安装AutoIT3,主要用到的工 ...

  3. NSSearchPathForDirectoriesInDomains用法(转)

    1. iPhone会为每一个应用程序生成一个私有目录,这个目录位于: /Users/sundfsun2009/Library/Application Support/iPhone Simulator/ ...

  4. 【Cocos2d-X(1.x 2.x) 修复篇】iOS6 中 libcurl.a 无法通过armv7s编译以及iOS6中无法正常游戏横屏的解决方法

    本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-cocos2dx/1000.html ...

  5. bug生命周期和bug状态处理

    首先,测试人员发现 BUG ,做好记录并上报至 BUG 数据库.接着,开发组长或经理确定该 BUG 是否有效 之后指定 BUG 的优先级并安排给相关开发人员.否则拒绝该 BUG 的修复. 然后,该 B ...

  6. specified属性

  7. 各种CTF的WP

    http://l-team.org/archives/43.html PlaidCTF-2014-twenty/mtpox/doge_stege-Writeup http://l-team.org/a ...

  8. hdu2088

    hdu2088 #include<stdio.h> #include<algorithm> using namespace std; ]; int main(){ ; ){ , ...

  9. springboot项目搭建

    https://blog.csdn.net/u012702547/article/details/54319508

  10. Maven Dependency错误——下载失败问题解决方案

    问题描述: The container 'Maven Dependencies' references non existing library '${groupid}/${artifactid}-$ ...