文档章节

Selenium-Python小记(一)

Kampfer
 Kampfer
发布于 2017/06/08 12:15
字数 725
阅读 42
收藏 0

安装selenium

pip install selenium

使用selenium

1.导入selenium库

from selenium import webdriver

2.创建实例

driver = weibdriver.FireFox()

3.打开网址

driver.get('http://www.baidu.com')

4.定位UI元素 示例:

<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">

(1)使用ID定位:根据标记id属性的值进行元素定位,个人比较推荐,因为id属性大部分具有唯一性,不用担心定位错元素,除非自动生成id属性,会出现“no such element”的报错。

driver.find_element_by_id("kw")

or

from selenium.webdriver.common.by import By

driver.find_element(by=By.ID,value="kw")

(2)使用classname定位:根据标记class属性的值进行定位,除非该class属性值是唯一的,否则会定位该class属性值第一次出现的位置

driver.find_element_by_class_name("s_ipt")
 
or

from selenium.webdriver.common.by import By

driver.find_element(By,CLASS_NAME,"s_ipt")

(3)使用tag name 定位:根据元素的标记名称进行定位,和classname定位一样,如果该tagname不是唯一的,则会定位值该tagname第一次出现的位置

driver.find_element_by_tag_name("input")

or

from selenium.webdriver.common.by import By

driver.find_eleme(BY.TAG_NAME,"input")

(4)使用name定位:根据标记的name属性进行定位,同id定位一样,唯一性较强

driver.find_element_by_name("wd")

or

from selenium.webdriver.common.by import By

driver.find_element(BY.NAME,"wd")

(5)使用link text定位:此定位方法适用于文本链接标记(<a>),如

<a onmousedown="return ns_c({'fm':'behs','tab':'tj_about'})" href="http://home.baidu.com">关于百度</a>

这样的情况。通过“关于百度”来定位元素

driver.find_element_by_link_text("关于百度")

or

from selenium.webdriver.common.by import BY

drvier.find_element(BY.LINK_TEXT,"关于百度")

(6)使用partial link text定位:此定位方法同link text定位相似,但是比link text定位使用范围相对更广泛,可以通过只言片语便能能进行定位,但是其准确性相比link text稍微差一些

driver.find_element_by_partial_link_text(‘’关于“)

or

from selenium.webdrvier.common,by import BY
drvier.find_element(BY.PARTIAL_LINK_TEXT,"关于")

(7)使用xpath定位:xpath定位的手段比较多,常见有如下几种: 输入图片说明 定位百度首页搜索输入框 方法一:使用目标元素的绝对路径,如下面的情况

driver.find_element_by_xpath('/html/body/div[1]/div[1]/div/div[1]/div/form/span[1]/input')

方法二:使用元素属性定位:

#使用id属性
driver.find_element_by_xpath('//input[@id=“kw”]’)
#使用name属性
driver.find_element_by_xpath('//input@[name=“wd"])
#使用class属性
driver.find_element_by_xpath('//input@[class="s_ipt"])
#使用多个属性
driver.find_element_by_xpath('//input@[class="s_ipt"] and @[name="wd"]')

要说明的是 //表示页面某个目录下

方法三:使用目标元素绝对路径和属性定位

driver.find_element_by_xpath("//span@[class='quickdelete-wrap'/input]")

(8)使用css选择器定位 方法一:使用目标元素的绝对路径,如下面的情况

driver.find_element_by_css_selector('html>body>div>wrapper>div>div>div>div>form>span>input')

多个标记使用'>'分开,

方法二:使用元素属性定位:

#使用id属性
driver.find_element_by_css_selector('#kw’)
#使用class属性
driver.find_element_by_css_selector('.s_ipt')
#使用标签
driver.find_element_by_css_selector('input')
#使用某个属性
driver.find_element_by_css_selector('input[class="s_ipt"]')

要说明的是 //表示页面某个目录下

方法三:使用目标元素绝对路径和属性定位

driver.find_element_by_css_selector('span.bg.s_ipt_wr.quickdelete-wrap>input#kw')

© 著作权归作者所有

Kampfer
粉丝 1
博文 38
码字总数 16494
作品 0
承德
QA/测试工程师
私信 提问
selenium webdriver 启动三大浏览器Firefox,Chrome,IE

selenium webdriver 启动三大浏览器Firefox,Chrome,IE 2017年04月01日 19:28:42 阅读数:71087 标签: seleniumpythonchromedriver iedrive 更多 个人分类: seleniumPython 版权声明:本文为...

linjin200
2018/09/07
0
0
Python+Selenium+Phantomjs数据抓取环境配置实践

以后估计要做数据挖掘方面的项目,现在却连数据都不会爬,这怎么能行? 先在知乎上面看到有高手说selenium可以用来爬数据,然后进一步找到了 “数据抓取的艺术(一):Selenium+Phantomjs数据...

Amstrong
2014/02/11
0
0
selenium webdriver w/python learning

=========== install =========== 1.安装python2.7: 下载地址:http://python.org/getit/ 下载后直接点击就可以安装 2.安装setuptools 下载地址:http://pypi.python.org/pypi/setuptools#do......

Rebecca.Hu
2012/02/16
0
2
Python selenium实现微博自动登录

(一)编程环境 操作系统:Win 10 编程语言:Python 3.6 (二)安装selenium 这里使用selenium实现。 如果没有安装过python的selenium库,则安装命令如下 (三)下载ChromeDriver 因为selen...

海天一树X
2018/05/15
0
0
Appium自动化测试系列2- 写一个Python测试脚本来测试一下YY语音

我们在《Appium自动化测试系列1-Appium环境的安装和配置》里已经搭好了Appium的基本环境,这一章,我们就来真刀真枪使用一下Appium, 看看Appium是如果来实现自动化测试的。在写测试脚本之前,...

冬吃萝卜
2015/01/27
0
3

没有更多内容

加载失败,请刷新页面

加载更多

Command模式

https://www.cnblogs.com/devinzhang/archive/2012/01/06/2315235.html

南桥北木
46分钟前
1
0
由于PostgreSQL9.x二进制输出格式默认值改变导致的读取图片错误

今天从社区邮件看到一个这样的问题,感觉很有意思,在这分享给大家~具体如下: 问题现象: 作者有一个很老的Java应用,当时后端采用的PostgreSQL数据库版本为8.x,该系统除了正常的数据增删...

闻术苑
今天
2
0
导入sql时出现Invalid default value for 'create_time'报错处理方法

当运行SQL会出现:[Err] 1067 - Invalid default value for 'create_time',是因为Mysql版本不同,如果版本不 < 5.6请去的话报错的处理方法如下: 方法 :alter table table_name modify cre......

writeademo
今天
1
0
对ssm(spring,springmvc,mybatis)的了解总结

ssm框架现在是java web开发的三个主流框架 ,其实严格来算只算是两个框架,因为springmvc属于spring框架 ,是spring的一个mvc子框架 那么我们下面就来了解一下三大框架把 一 .Spring spring...

咸鱼-李y
今天
2
0
聊聊Elasticsearch的FsProbe

序 本文主要研究一下Elasticsearch的FsProbe FsProbe elasticsearch-7.0.1/server/src/main/java/org/elasticsearch/monitor/fs/FsProbe.java public class FsProbe { private static f......

go4it
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部