元素
方法
示例
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. DevExpress v18.1新版亮点——WinForms篇(七)

    用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WinForms v18.1 的新功能,快来下载试用新版本! ...

  2. MyEclipse WebSphere开发教程:安装和更新WebSphere 6.1, JAX-WS, EJB 3.0(一)

    你开学,我放价!MyEclipse线上狂欢继续!火热开启中>> [MyEclipse最新版下载] MyEclipse支持Java EE技术(如JAX-WS和EJB 3.0),它们以功能包的 ...

  3. DevExpress v17.2新版亮点—WPF篇(六)

    用户界面套包DevExpress v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WPF v17.2 新的Hamburger Menu.Sched ...

  4. apache的日志access_log分析

    正常日志格式:客户端地址 访问者的标识 访问者的验证名字 请求的时间 请求类型 请求的HTTP代码 发送给客户端的字节数   当网站出问题时分析日志,第一步一般都不会是看访问日志.但是也不能忽视它,在 ...

  5. 原生js实现数据的双向绑定

    原生js实现数据的双向绑定 需要了解的属性是原色js的Object.definePrototype(obj,pop,descript); obj:被构造的对象 pop:被构造的对象的属性,创建对象或修 ...

  6. C++ 备忘录 (1)

    取模: 1. 转载自:http://ceeji.net/blog/mod-in-real/ 背景 最近在一道 Java 习题中,看到这样的一道题: What is the output when th ...

  7. (MyEclipse) MyEclipse完美破解方法(图)

    http://photo.blog.sina.com.cn/list/blogpic.php?pid=53358777td408badc4071&bid=533587770101dd03&am ...

  8. HDU 2111:Saving HDU(贪心)

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  9. win10系统把文件夹固定到任务栏

    为某个文件夹创建快捷方式 右键该快捷方式,选择固定到开始屏幕 点击win图标进入开始屏幕,在屏幕的右侧有刚才固定的快捷方式 右键该快捷方式,选择固定到任务栏即可.

  10. PNG文件结构

    对于一个PNG文件来说,其文件头总是由位固定的字节来描述的,HEX: 89 50 4E 47 0D 0A 1A 0A 使用ultra打开一个png图片,结果如下: 其中第一个字节0x89超出了ASCI ...