1. -*- coding;utf-8 -*-
  2. from selenium import webdriver
  3. dr = webdriver.Chrome()
  4. dr.get("https://www.baidu.com")
  5. #有八种元素定位方法:
  6. #id, name, class name, tag name, link text,部分link text, xpath, css选择器
  7.  
  8. 其中,find_elements_by_xxx 获取的是一组元素

前7种:

  1. <span id="s_kw_wrap" class="s_ipt_wr"><span class="soutu-btn"></span>
  2. <span class="soutu-btn"></span>
  3. <input type="text" class="s_ipt" name="wd" id="kw" maxlength="" autocomplete="off" value="">
  4. <input></input>
  5. </span>
  6. <div id="u_sp" class="s-isindex-wrap s-sp-menu">
  7. <a href="http://news.baidu.com" target="_blank" class="mnav">超长的新闻名称</a>
  8. </div>
  9.  
  10. #id
  11. dr.find_element_by_id("kw")
  12. #name
  13. dr.find_element_by_name("wd")
  14. #class name
  15. dr.find_element_by_class_name("s_ipt")
  16. #tag name (标签名称)
  17. dr.find_element_by_tag_name("input") #适用于只有一个input标签
  18. dr.find_elements_by_tag_name("input")[0].send_keys() #适用于多个input标签
  19. dr.find_element_by_tag_name("//span/input[0]") #通过父级元素
  20.  
  21. #text link, 部分text link
  22. dr.find_elements_by_link_text("超长的新闻名称")
  23. dr.find_element_by_partial_link_text("新闻")
  24.  
  25. #xpath
  26. dr.find_element_by_xpath("//input[@id='kw']") # 双斜杠表示不确定
  27. dr.find_element_by_xpath("/*[@id='kw']") # "*"表示所有元素
  28. dr.find_element_by_xpath("//input[@name='wd']")
  29. dr.find_element_by_xpath("//input[@class='s_ipt']")
  30. dr.find_element_by_xpath("//input[@value='123']")
  31.  
  32. dr.find_element_by_xpath("//span/input[0]")#通过父级
  33. dr.find_element_by_xpath("//span[@class='bg s_ipt_wr']/input[0]")#通过父级
  34.  
  35. 也可用多种属性集合
  36. dr.find_element_by_xpath("//input[@id='kw' and @name='wd']")

CSS选择器:

  1. <span id="s_kw_wrap" class="s_ipt_wr"><span class="soutu-btn"></span>
  2. <span class="soutu-btn"></span>
  3. <input type="text" class="s_ipt" name="wd" id="kw" maxlength="" autocomplete="off" value="">
  4. </span>
  5.  
  6. #class 用“.”
  7. dr.find_element_by_css_selector(".s_ipt")
  8.  
  9. #id 用“#”
  10. dr.find_element_by_css_selector("#kw")
  11.  
  12. #name
  13. dr.find_element_by_css_selector("[name=wd]")
  14. dr.find_element_by_css_selector("name='wd'")
  15. dr.find_element_by_css_selector("//input[name='wd']")
  16.  
  17. #组合
  18. dr.find_element_by_css_selector("span>input.s_ipt") #通过父级
  19. dr.find_element_by_css_selector("span>input#kw")
  20. dr.find_element_by_css_selector("span.s_ipt_wr>input")

selenium中,8种 find element 方法的更多相关文章

  1. Selenium中三种等待的使用方式---规避网络延迟、代码不稳定问题

    在UI自动化测试中,必然会遇到环境不稳定,网络慢的情况,这时如果你不做任何处理的话,代码会由于没有找到元素,而报错.这时我们就要用到wait(等待),而在Selenium中,我们可以用到一共三种等待, ...

  2. Sql Server中三种字符串合并方法的性能比较

    文章来自:博客园-DotNet菜园 最近正在处理一个合并字符吕的存储过程,在一个测试系统的开发中,要使用到字符串合并功能,直接在Sql中做.示例:有表內容﹕名称  內容1     abc1      ...

  3. ASP.NET中26种性能优化方法

    系统类  Type类,Object类,String类, Arrary类,Console类, Exception类,GC类, MarshalByRefObject类, Math类. DateTime结构 ...

  4. UI自动化时,解决selenium中无法点击Element:ElementClickInterceptedException

    在跑自动化时,页面上有2个下拉框,两个下拉框无论屏蔽哪一段都会成功,但是同时放开跑时会报错,百度给的解释是上面的下拉框元素覆盖了下面下拉框的元素定位,才会导致报错 百度的解决办法有2种: elemen ...

  5. Selenium:八种元素定位方法

    前言: 我们在做WEB自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素.工具或代码无法像我们测试人员一样用肉眼来分辨页面上的元素.那么我们怎么来定位他们呢? 在学 ...

  6. Python中两种处理错误方法的比较

    我所说的处理错误的方法,其实是try:,except和raise这两种. 首先抛出一个实例, dictt={'a':1,'b':2,'c':3} try: if dictt['d']>1: #字 ...

  7. UWP开发中两种网络图片缓存方法

    通常情况下,我们的程序需要从服务器读取图片,但如果需要不止一次读取某一张图片的话,就需要做本地缓存了,这样既为用户省一点流量,又能显得你的APP很快. 假如你已经知道了某一张图片的地址,那么第一件事就 ...

  8. iOS——浅谈iOS中三种生成随机数方法

    ios 有如下三种随机数方法:

  9. Keil C51程序设计中几种精确延时方法

    1 使用定时器/计数器实现精确延时 单片机系统一般常选用11.059 2 MHz.12 MHz或6 MHz晶振.第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确 ...

随机推荐

  1. Golang入门教程(七)基本数据类型使用案例

    18种基本数据类型使用 代码案例1 package main import "fmt" func main() { //使用 var 定义一个布尔类型并且初始化 var flag ...

  2. Mac Office 2016 破解

    官方最新版本office 是2016.15.38 此版本主要是修复了Excel内存损害漏洞. 官方下载的版本大小是1.67G,因为其他途径下载的版本,不确保是最新版本且为完整的版本.不知道我说的这个大 ...

  3. oldboy s21day02

    1.猜数字,设定一个理想数字比如:66,让用户输入数字,如果比66大,则显示猜测的结果大了:如果比66小,则显示猜测的结果小了;只有等于66,显示猜测结果正确,然后退出循环.while 1: num ...

  4. Spring MVC整合Mybatis 入门

    本文记录使用Intellij创建Maven Web工程搭建Spring MVC + Mybatis 的一个非常简单的示例.关于Mybatis的入门使用可参考这篇文章,本文在该文的基础上,引入了Spri ...

  5. None.js 第三步 回调函数【阻塞代码--非阻塞代码】

    阻塞代码实例 var fs = require("fs"); // 导入文件系统 file system var data = fs.readFileSync('input.txt ...

  6. try}-with-resources

    今天看前人代码的时候,发现了一个以前一直没用过的东西, 公司目前使用的是jdk1.8(vertx3需要), 在某处代码里有这样一行代码: try( FileOutputStream fos=new F ...

  7. Git命令用于检查特定提交的差异

    假设你的提交日志如下(可以通过 git log 命名查看) commit 14af3315a2b1234daac74ece61ef913007043e06 Author: wuxianqiang &l ...

  8. java中出现内存溢出的几种情况

    情况一:java.lang.OutOfMemoryError: Java heap space 原因:java堆内存不足,可能是真的不足,也可能是程序中有死循环 方案:1.调整JVM参数-Xms204 ...

  9. RSA加解密-2

    Java使用RSA加密解密签名及校验   package com.ihep; import java.io.BufferedReader; import java.io.BufferedWriter; ...

  10. <c:out>标签中的escapeXML属性

    <c:out>标签中的escapeXML属性 在<c:out>中,escapeXML属性默认为true. 当设置escapeXML的属性为true时,将value中的值以字符串 ...