元素
方法
示例
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 v17.2新版亮点—Bootstrap篇(一)

    用户界面套包DevExpress v17.2日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了Bootstrap Controls v17.2 的CardView.Charts ...

  2. STL标准库-一个万用的hash function

    技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 在前面我介绍过hash的使用,本次主要介绍一下Hash Function Hash Function即获得hash code的函 ...

  3. About RFC

    RFC说明 Request For Comments (RFC),是一系列以编号排定的文件,几乎所有的因特网标准都收录在RFC文件之中,如果你想成为网络方面的专家,那么RFC无疑是最重要也是最经常需要 ...

  4. NBUT 1222 English Game 2010辽宁省赛

    Time limit 1000 ms Memory limit 131072 kB This English game is a simple English words connection gam ...

  5. CF1143F/1142C U2

    CF1143F/1142C U2 巧妙的思维题.注意到这里只用两个点就可以确定一根抛物线,联想到两点确定一条直线,尝试转化. \(y=x^2+bx+c\) 就可以写成 \(y-x^2=bx+c\) , ...

  6. CTF-练习平台-WEB之 签到题

    一.签到题 根据提示直接加群在群公告里就能找到~

  7. CSS 属性用法备忘录

    ☆ margin: 0; padding: 0; :{ 顺时针 margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: ...

  8. IntelliJ IDEA 2017激活

    最新更新: 在激活Jetbrains旗下任意产品的时候选择激活服务器 填入以下地址便可成功激活 http://idea.liyang.io 点击help→Register→License sever ...

  9. microsoft webMatrix 使用 IISnode 进行node express 开发

    微软的microsoft webMatrix是一个免费的开发工具,我们可以使用它进行node 开发并利用iisnode 模块进行iis 的nodejs网站的维护,还是比较方便的. 一个简单的node ...

  10. 小米盒子root及sshdroid安装

    1.root 参考屌丝猫的教程 主要原理是通过运行自定义recovery实现root功能 2.安装sshdroid以及幸运破解器 3.使用幸运破解器吧sshdroid编程系统应用,从而实现自启动