元素
方法
示例
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. RSA签名验证无法通过,检查以下部分

    RSA签名验证无法通过,检查以下部分:1.是否和上游交换公钥,提交给上游的公钥是否配置正确并生效2.检查加密方式是SHA1还是MD5,是否跟上游一致3.上游采用的是否是base64SafeUrl的方式 ...

  2. Locust 其他协议

    Locust 是基于HTTP作为主要目标构建的,但是他同样可以扩展其他的协议,接受请求与获得返回.在编写的客户端的时候,我们就要使用到最常使用的 request_success 和 request_f ...

  3. CS231n 斯坦福深度视觉识别课 学习笔记(完结)

    课程地址 第1章 CS231n课程介绍 ---1.1 计算机视觉概述 这门课的主要内容是计算机视觉.它是一门需要涉及很多其他科目知识的学科. 视觉数据占据了互联网的绝大多数,但是它们很难利用. --- ...

  4. HOG+SVM+INRIAPerson数据集代码

    #include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgu ...

  5. Jordan标准形

    一.引入 前面已经指出,一切n阶矩阵A可以分成许多相似类.今要在与A相似的全体矩阵中,找出一个较简单的矩阵来作为相似类的标准形.当然以对角矩阵作为标准形最好,可惜不是每一个矩阵都能与对角矩阵相似.因此 ...

  6. SIM800C SIM卡唯一标识符ICCID

    /******************************************************************************* * SIM800C SIM卡唯一标识符 ...

  7. Potplayer快捷键

    potplayer 滞后快捷键: x potplayer 滞后快捷键: c Crtl+C:截图到剪切板 Crtl+E:截图到安装目录Capture

  8. 代理模式及Spring AOP (二)

    一.Spring AOP   1.1 Spring AOP 底层还是用的动态代理.如果目标对象所对应的类有接口,spring就用jdk生成代理对象: 如果目标对象所对应的类没有接口,spring就用C ...

  9. BZOJ5091: [Lydsy1711月赛]摘苹果【期望DP】

    Description 小Q的工作是采摘花园里的苹果.在花园中有n棵苹果树以及m条双向道路,苹果树编号依次为1到n,每条道路的两 端连接着两棵不同的苹果树.假设第i棵苹果树连接着d_i条道路.小Q将会 ...

  10. NSObject之一

    Objective-C中有两个NSObject,一个是NSObject类,另一个是NSObject协议.而其中NSObject类采用了NSObject协议.在本文中,我们主要整理一下NSObject类 ...