Webdriver概述
Webdriver (Selenium2)是一种用于Web应用程序的自动测试工具,它提供了一套友好的API,与Selenium 1(Selenium-RC)相比,Webdriver 的API更容易理解和使用,其可读性和可维护性也大大提高。Webdriver完全就是一套类库,不依赖于任何测试框架,除了必要的浏览器驱动,不需要启动其他进程或安装其他程序,也不必像Selenium 1那样需要先启动服务。
支持浏览器
- Firefox (FirefoxDriver)
- IE(InternetExplorerDriver)
- Opera(OperaDriver)
- Chrome (ChromeDriver)
- safari(SafariDriver)
支持语言
- Java
- C#
- PHP
- Python
- Perl
- Ruby
安装,卸载、查看
安装:pip install selenium==XXXX(不写死就是安装最新版本)
卸载 pip uninstall selenium
查看版本号:
pip show selenium
多浏览器运行
启动Firefo
1.FireFox 48以上版本
Selenium 3.X +FireFox驱动——geckodriver
2.Firefox 48 以下版本
Selenium2.X 内置驱动
驱动下载地址https://github.com/mozilla/geckodriver/releases
启动IE浏览器
1.IE 9以上版本
Selenium3.X +IE驱动
2.IE 9以下版本
Selenium 2.X +IE驱动
启动Chrome浏览器
selenium2.x/3.x +Chrome驱动
注意!
各个驱动下载地址: http://www.seleniumhq.org/download/
浏览器位数的版本和驱动版本要一致! 如果是32bit浏览器而Driver是64bit则会导致脚本运行失败!
示例
打开页面
1.启动火狐浏览器,
2.首先打开我要自学网页面,打印网页标题,等待3秒
3.打开百度首页,打印网页标题,再等待2秒
4.关闭浏览器。
from selenium import webdriver
from time import sleep
#加载浏览器驱动
driver=webdriver.Firefox()
#打开自学网页面
driver.get("http://www.51zxw.net")
print(driver.title)
sleep(3)
#打开百度首页
driver.get("http://www.baidu.com")
print(driver.title)
sleep(3)
#关闭浏览器
driver.quit()
浏览器操作
#页面最大化
driver.maximize_window()
#指定页面大小
driver.maximize_window()
#刷新页面
driver.refresh()
#后退
driver.back()
#前进
driver.forward()
#退出
driver.quit()
元素定位
#id与name 定位
driver.find_element_by_id("kw").send_keys("Selenium")
driver.find_element_by_name("wd").send_keys("Selenium")
#点击
driver.find_element_by_id("su").click()
tag_name定位
#定位标签名为input的元素
driver.find_element_by_tag_name("input").send_keys("selenium")
#获取页面所有标签名称为“input”的标签。
driver.find_elements_by_tag_name("input").send_keys("selenium")
#获取页面所有标签名称为“input”的第一个标签。
driver.find_elements_by_tag_name("input")[0].send_keys("selenium")
class_name定位
driver.find_element_by_class_name("s_ipt").send_keys("Selenium")
link_text定位
#选择这个元素的link text
driver.find_element_by_partial_link_text('程序开发').click()
#partial link text就是选择这个元素的link text中一部分字段
driver.find_element_by_partial_link_text('程序开发').click()
XPath定位
# 绝对路径定位
driver.find_element_by_xpath("/html/body/div[2]/div[1]/div/div[1]/div/form/span[1]/input").send_keys("51zxw")
# 利用元素熟悉定位--定位到input标签中为kw的元素
driver.find_element_by_xpath("//input[@id='kw']").send_keys("Selenium")
# 定位input标签中name属性为wd的元素
driver.find_element_by_xpath("//input[@name='wd']").send_keys("Selenium")
# 定位所有标签元素中,class属性为s_ipt的元素
driver.find_element_by_xpath("//*[@class='s_ipt']").send_keys("Python3")
Xpath层级与逻辑定位
#层级和属性结合定位--自学网首页输入用户和名密码
driver.find_element_by_xpath("//form[@id='loginForm']/ul/input[1]").send_keys("51zxw")
driver.find_element_by_xpath("//form[@id='loginForm']/ul/input[2]").send_keys("66666")
#逻辑运算组合定位
driver.find_element_by_xpath("//input[@class='loinp' and @name='username']").send_keys("51zxw")
Css定位
#根据id来定位
driver.find_element_by_css_selector('#kw').send_keys("Selenium")
#根据class定位
driver.find_element_by_css_selector('.s_ipt').send_keys('python')
#通过属性来定位
driver.find_element_by_css_selector("[autocomplete='off']").send_keys("selenium")
#通过元素层级来定位
driver.find_element_by_css_selector("form#loginForm>ul>input").send_keys("51zxw")
下拉菜单元素定位——使用Select类定位
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import Select
driver=webdriver.Firefox()
driver.get("http://www.51zxw.net")
sleep(2)
#利用Select类来进行定位
select = Select(driver.find_element_by_css_selector("[name='CookieDate']"))
select.select_by_index(2)
select.select_by_visible_text("留一年")
select.select_by_value("1")
sleep(2)
driver.quit()