Selenium3+python几种定位元素的方法
学习小结:
这里使用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几种定位元素的方法的更多相关文章
- Python+Selenium定位元素的方法
Python+Selenium有以下八种定位元素的方法: 1. find_element_by_id() eg: find_element_by_id("kw") 2. find_ ...
- 【转】python 三种遍历list的方法
[转]python 三种遍历list的方法 #!/usr/bin/env python # -*- coding: utf-8 -*- if __name__ == '__main__': list ...
- Python+Appium自动化测试(6)-元素等待方法与重新封装元素定位方法
在appium自动化测试脚本运行的过程中,因为网络不稳定.测试机或模拟器卡顿等原因,有时候会出现页面元素加载超时元素定位失败的情况,但实际这又不是bug,只是元素加载较慢,这个时候我们就会使用元素等待 ...
- selenium+python定位元素的方法及使用
selenium的八种定位方法 By.ID 通过id定位 By.CLASS_NAME 通过className定位 By.CSS_SELECTOR 通过CSS定位 By.LINK_TEXT 通过link ...
- python + selenium 练习篇 - 定位元素的方法
1.利用ID定位元素(能直接通过ID来定位的元素比较少) # coding=utf-8from selenium import webdriverdriver = webdriver.Chrome() ...
- selenium八种定位元素方法
1.driver.find_element_by_id('su') 定位到元素的id一般id是唯一的,可以精确定位到元素 2.driver.find_element_by_name() 通过元素的na ...
- webDriver定位元素的方法
在UI层面的自动化测试开发中,元素的定位与操作是基础,也是经常遇到的困难所在.webdriver提供了8种定位: 1. id定位:find_element_by_id("id值") ...
- selenium定位元素的方法
1.id定位: find_element_by_id() 从上面定位到的搜索框属性中,有个id="kw"的属性,我们可以通过这个id定位到这个搜索框 代码: # coding = ...
- Python四种实现单例模式的方法
在这之前,先了解super()和__new__()方法 super()方法: 返回一个父类或兄弟类类型的代理对象,让你能够调用一些从继承过来的方法. 它有两个典型作用: a. 在单继承的类层次结构中, ...
随机推荐
- DCOMP——分散式计算
新型网络DCOMP 据国外媒体2017年11月7日报道,曾经发明互联网的秘密机构“美国国防部高级研究计划局(DARPA)”如今正致力于研发能够完胜互联网的新网络,并且启动了一项链接物联网.智能手机.智 ...
- 2、CentOS下编译安装Python2.7.6(转)
CentOS系统下面Python在升级到2.7.6的时候,没有找到安装包直接安装,只能通过源代码编译的方式来安装Python 2.7.6版本.这篇是编译和安装Python2.7.6的过程记录. Cen ...
- 初学者如何迅速学习web前端开发
首先告诉你的是,零基础学习开始学习web前端肯定难,web前端的专业程度本身就不简单,学习这事本来就是一件非常煎熬的事情,人都不愿意学习,可是没办法,为了生存掌握一个技能,你必须学,如果你认真的对待, ...
- Problem 4: Largest palindrome product
A palindromic number reads the same both ways. The largest palindrome made from the product of two 2 ...
- IDEA新建项目时,没有Spring Initializr选项
换了台新电脑,然后重新安装了Intellij IDEA,创建spring boot项目的时候找不到Spring Initializr选项了. 然后百度了下,发现有前辈做出了回答,就复制存到了自己随笔里 ...
- Nginx原理
原理机制 Nginx采用多进程(每个worker进程只对应一个线程)和I/O多路复用机制,实现并发的事件驱动处理: 多路复用即通过一种机制监视多个文件描述符,一旦文件描述符就绪(读写就绪),就可通知程 ...
- oracle 优化方法总结
分析和优化的基本步骤如下: 1.如果是SQL语句的写法问题,我们可以通过在不更改业务逻辑的情况下改写SQL来加以解决: 2.如果是不必要的全表扫描/排序而导致了目标SQL的性能问题,我们可以通过建立合 ...
- docker配置代理的用户名密码
公司访问外网全部需要经过代理服务器,在使用docker的过程中,发现就算为docker配置了代理,还是会因为没有代理服务器认证,导致pull操作失败,报如下错误: Error response fro ...
- WebStorm Goland PyCharm 等JetBrains验证服务器
http://idea.iteblog.com/key.php http://idea.idbry.com 2017年12月08日20:05:08 http://xdouble.cn:8888/ ht ...
- Java的命名规范
1.类名.接口名:首单词的第一个字母要大写.如果有多个单词,其他单词的首字母要大写. 2.包名:全部小写. 3.变量名.方法名:首单词的第一个字母小写.如果有多个单词,其他单词的首字母要大写. 4.常 ...