元素
方法
示例
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. Java Socket 实现HTTP服务器核心

    原文链接:http://www.ihuxu.com/p/235.html   首先了解下HTTP协议: wikiPedia的说明很好,在此不重复了.链接:http://zh.wikipedia.org ...

  2. tunning-prime优化mysql建议

    #!/bin/sh       # set tabstop=8   ################################################################## ...

  3. Redis学习第二课:Redis String类型及操作

    Strings类型 String是最简单的类型,一个Key对应一个Value,String类型是二进制安全的,可以包含任何数据,比如jpg图片或序列化的对象. Strings类型的操作: Set:设置 ...

  4. vue 之 .$mount()

    $mount():手动挂载 当Vue实例没有el属性时,则该实例尚没有挂载到某个dom中: 假如需要延迟挂载,可以在之后手动调用vm.$mount()方法来挂载.例如: <div id=&quo ...

  5. HDU 4970

    http://acm.hdu.edu.cn/showproblem.php?pid=4970 比赛的时候线段树水过的,比赛后线段树一直T,看了下正解真的是智商压制 题意:走直线,长度1-N,还有一些人 ...

  6. Spring AOP体系学习总结

    要理解AOP整体的逻辑需要理解一下Advice,Pointcut,Advisor的概念以及他们的关系.  Advice是为Spring Bean提供增强逻辑的接口,提供了多种方法增强的方式,比如前置, ...

  7. C++ 内存拷贝函数 memcpy

    在C/C++中经常会遇到对一段固定的连续内存进行拷贝操作,   这时候我们就需要用到   <cstring>  头文件  中的  memcpy  函数. 具体使用如下: 其中   ,   ...

  8. CF1119 Global Round 2

    CF1119A Ilya and a Colorful Walk 这题二分是假的.. \(1,2,1,2,1\) 有间隔为 \(3\) 的,但没有间隔为 \(2\) 的.开始被 \(hack\) 了一 ...

  9. C# 使用oledb 方式连接本地或者远程oracel 数据库的方式

    对于C# 进行oracle 数据库的开发来说使用oracle 提供的odp.net 方式是比较方便的,同时在性能以及兼容性也是比较好的 但是,对于不打算使用的,那么该如何使用oledb 进行连接 连接 ...

  10. MySQL Group Replication

    group replication是一种全新的高可用,高扩张的MySQL集群服务.高一致性,基于原生复制及paxos协议的组复制技术,以插件方式提供一致数据安全保证:高容错性,大多数服务正常就可继续工 ...