学习小结:

这里使用ChromeV73+web driver 2.46

 #几种定位方式:
#Autotest.py
from selenium import webdriver
from selenium.webdriver.common.by import By
import time dr = webdriver.Chrome()
dr.get("http://www.baidu.com") #通过各种元素:name,id,class,tag,text dr.find_element_by_name('wd').send_keys('apple') #name
dr.find_element_by_id('su').click #id
dr.find_element_by_class_name('s_ipt').send_keys('apple') #class
dr.find_element_by_tag_name('') #tag
dr.find_element_by_link_text('新闻').click() #通过文字链接打开下级页面
dr.find_element_by_partial_link_text('一段很长的').click()#通过长文字的一部分定位元素 #从一组相同标签的元素里找到目标元素
inputs = dr.find_elements_by_tag_name('input')
for i in inputs:
if i.get_attribute('name') == "wd":
i.send_keys('apple')
dr.find_element_by_id('su').click() #xpath定位元素:
dr.find_element_by_xpath("//input[@id='kw']").send_keys("天气") #xpath定位元素:input下面: id='kw'
dr.find_element_by_xpath("//*[@id='kw']").send_keys("天气") #xpath定位元素:*=查找所有元素: id='kw' #父标签form,id='form' 下面第1个标签/span下面第1个/input(如果要定位的span是第二个则为/span[2])
dr.find_element_by_xpath("//form[@id='form']/span[1]/input[1]").send_keys("天气") #这里【1】可以省略,只是为了理解 dr.find_element_by_xpath("/html/body/div/div/div/div/div/form/span/input").send_keys('天气') #xpath: 绝对路径定位元素 #css选择器定位:
dr.find_element_by_css_selector('.s_ipt').send_keys("天气") #.class
dr.find_element_by_css_selector('#kw').send_keys("天气") #ID
dr.find_element_by_css_selector('input[maxlength="255"]').send_keys("天气") #下面这个意思是css定位:标签form(.表示class)class='fm' 下面的子标签span 的 子标签 input的 id='kw'(#表示id)
dr.find_element_by_css_selector('form.fm > span > input#kw').send_keys("天气") #By类定位,需要引入By类
#dr.find_element(By.ID,'kw').send_keys('天气')
#dr.find_element(By.NAME,'wd').send_keys('天气')
#dr.find_element(By.CLASS_NAME,'s_ipt').send_keys('天气')
#dr.find_element(By.TAG_NAME,'input').send_keys('天气') #这里定位不到,需要类似上面的for循环
#dr.find_element(By.LINK_TEXT,u'新闻').click()
#dr.find_element(By.PARTIAL_LINK_TEXT,u'新').click()
#dr.find_element(By.XPATH,"//*[@class='s_ipt']").send_keys('天气')
#dr.find_element(By.CSS_SELECTOR,'form.fm > span > input#kw').send_keys('天气') time.sleep(3)
dr.quit()

Selenium3+python几种定位元素的方法的更多相关文章

  1. Python+Selenium定位元素的方法

    Python+Selenium有以下八种定位元素的方法: 1. find_element_by_id() eg: find_element_by_id("kw") 2. find_ ...

  2. 【转】python 三种遍历list的方法

    [转]python 三种遍历list的方法 #!/usr/bin/env python # -*- coding: utf-8 -*- if __name__ == '__main__': list ...

  3. Python+Appium自动化测试(6)-元素等待方法与重新封装元素定位方法

    在appium自动化测试脚本运行的过程中,因为网络不稳定.测试机或模拟器卡顿等原因,有时候会出现页面元素加载超时元素定位失败的情况,但实际这又不是bug,只是元素加载较慢,这个时候我们就会使用元素等待 ...

  4. selenium+python定位元素的方法及使用

    selenium的八种定位方法 By.ID 通过id定位 By.CLASS_NAME 通过className定位 By.CSS_SELECTOR 通过CSS定位 By.LINK_TEXT 通过link ...

  5. python + selenium 练习篇 - 定位元素的方法

    1.利用ID定位元素(能直接通过ID来定位的元素比较少) # coding=utf-8from selenium import webdriverdriver = webdriver.Chrome() ...

  6. selenium八种定位元素方法

    1.driver.find_element_by_id('su') 定位到元素的id一般id是唯一的,可以精确定位到元素 2.driver.find_element_by_name() 通过元素的na ...

  7. webDriver定位元素的方法

    在UI层面的自动化测试开发中,元素的定位与操作是基础,也是经常遇到的困难所在.webdriver提供了8种定位: 1. id定位:find_element_by_id("id值") ...

  8. selenium定位元素的方法

    1.id定位: find_element_by_id() 从上面定位到的搜索框属性中,有个id="kw"的属性,我们可以通过这个id定位到这个搜索框 代码: # coding = ...

  9. Python四种实现单例模式的方法

    在这之前,先了解super()和__new__()方法 super()方法: 返回一个父类或兄弟类类型的代理对象,让你能够调用一些从继承过来的方法. 它有两个典型作用: a. 在单继承的类层次结构中, ...

随机推荐

  1. idea开发maven项目热加载

    JavaWeb项目,尤其是一些大型项目,在开发过程中,启动项目耗费的时间就不短.大大的拖慢了开发速度!在这分享一种不需要插件就能实现热加载的方法! 默认已经创建好一个Maven项目 点击此按钮 点击 ...

  2. 20175224 2018-2019-2 《Java程序设计》第五周学习总结

    教材学习内容总结 第六章:接口与实现 接口:关键字interface来定义一个接口.分为接口声明,接口体. interface Printable { final int MAX=100; void ...

  3. MSBuild 命令参数

    Build a Visual Studio project or solution using MSBuild Command Line Arguments  常用命令行参数 详解: MSBuild ...

  4. java 五十条数据分为一组

    public static void main(String[] args) { List<Integer> list = new ArrayList<>(); for(int ...

  5. Django在根据models生成数据库表时报错: __init__() missing 1 required positional argument: 'on_delete'

    原因: 在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错:TypeError: __init__() missing ...

  6. windows 下安装MySQL 服务无法启动类问题

    解决方案: 1 执行 mysqld.exe -nt remove 2 执行 mysqld --initialize(中间是两个中划线) 3 执行 mysqld.exe -nt install 4 执行 ...

  7. CentOS7突然出现无法连接网络的情况--VM下

    转自:https://blog.csdn.net/xzm5708796/article/details/83757372 突然出现VM内安装的centos7系统无法通过外部进行连接1.登陆到虚拟机上查 ...

  8. vue添加页面键盘事件

    我司开发项目,用的是vue+elementUI,做登陆页面的时候,点击enter键的时候要实现和点击登陆按钮一样的功能,所以就百度了一下,于是一通百度之后,就在点击按钮上面直接添加了@keyup.en ...

  9. ABP中mapping中忽略属性

    创建一个XXXXProfile继承Profile,然后在构造函数中写忽略相关的,如下 public class ProductPriceDtoProfile: Profile { /// <su ...

  10. JS的call与apply的用法

    call与apply的第一个参数都是需要调用的函数对象,在函数体内这个参数就是this的值,剩余的参数是需要传递给函数的值,call与apply的不同就是call传的值可以是任意的,而apply传的剩 ...