python3使用selenium上篇

2018-09-25  本文已影响22人  test小星星

selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。
想了解selenium发展史点击一下。

实例百度搜索selenium

# 导入webdriver类
from selenium import Webdriver
# 调用selenium浏览器驱动,获取浏览器句柄
driver = webdriver.Firefox()
# 通过句柄访问URL
first_url = 'http://www.baidu.com'
driver.get(first_url)
# 通过句柄控制页面元素
driver.find_element_by_id("kw").send("selenium")  # 在搜索框输入selenium
driver.find_element_by_id("su").click()  # 单击百度一下

环境搭建

1.安装python3
python下载地址:https://www.pythin.org/
2.安装selenium
cmd命令行输入:pip install selenium

cmd命令行输入:pip install selenium=指定版本号
pip show selenium 查看当前包的版本信息
3.安装浏览器驱动(WebDriver)
驱动下载地址:http://www.seleniumhq.org/download/
解压文件,将得到的.exe文件放到python目录下

元素定位

1. id定位
通过HTML元素的ID值定位:find_element_by_id("id名称")
2. name定位
通过HTML元素的name属性值定位:find_element_by_name("name名称")
3. class定位
通过HTML元素的class值定位:find_ement_by_class_name("class名称")
4. tag定位
每个一个元素本质上也是一个tag,如:<div>、<input>、<a>等
find_element_by_tag_name("input")
5. link定位
它专门用来定位文本链接:find_element_by_link_text("链接名")
6. partial link定位
parial link定位是对link定位的一种补充,有些文本链接会比较长,这个时候我们可以取文本链接的一部分定位,只要这一部分信息可以唯一地标识这个链接。
find_element_by_partial_link_text("一个很长的文本链接")
7. XPath定位

8. 常用css定位

选择器 例子 描述
.class .temp class选择器,选择class="temp"的所有元素
#id #kw id选择器,选择id="kw"的所有元素
* * 选择所有元素
element input 选择所有<input>元素
> div>input 选择父元素为<div>的所有<input>元素,父子关系
+ div+input 选择同一级紧接在<div>元素之后的所有<input>元素 ,兄弟关系
[attrbute=value] [type="submit"] 选择type="submit"的所有元素

9. 用By定位元素
针对前面介绍的8种定位方法,WebDriver还提供了另外一套写法,即统一调用find_element()方法
find_element()方法只用于定位元素,需要两个参数,第一个参数是定位的类型,第二个参数是定位的具体方式,在使用By之前需要导入By类

# 导入By
from selenium.webdriver.common.by import By
# id定位
find_element(By.ID, "id值")
# name属性定位
find_element(By.NAME, "name值")
# class属性定位
find_element(By.CLASS_NAME, "class值")
# 标签定位
find_element(By.TAG_NAME, "input")
#定位链接
find_element(By.LINK_TEXT, "新闻")
# 定位长链接
find_element(By.PARTIAL_LINK_TEXT, "新")
# xpath定位
find_element(By.XPATH, "//*[@class='值']")
# css定位
find_element(By.CSS_SELECTOR, "span.class值>input#值")

10. 定位一组元素
定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在单词element后面多加了个s表示复数。
用于场景:批量操作元素。
例如,勾选页面上所有的复选框
先获取一组元素,再从这组对象中过滤出需要操作的元素。

# 选择页面上所有的tag_name为input的元素
inputs=driver.find_elements_by_tag_name('input')
# 然后从中过滤出type为checkbox的元素,单击勾选
fro input in inputs:
    if input.get_attribute('type')== 'chexkbox':
        input.click()

操作页面的方法

1. 简单的元素操作

2. 获取页面信息

3. 鼠标事件

# 导入提供鼠标操作的ActionChains类    
from selenium webdriver import ActionChains
# 定位要右击的元素
youji=driver.find_element_by_id("xx")
# 调用ActionChains()类,将浏览器驱动driver作为参数传入
# context_click()方法用于模拟鼠标右击操作
ActionChains(driver).context_click(youji).perform()

4. 键盘事件

接下篇

上一篇 下一篇

猜你喜欢

热点阅读