Webdriver

Webdriver概述

Webdriver (Selenium2)是一种用于Web应用程序的自动测试工具,它提供了一套友好的API,与Selenium 1(Selenium-RC)相比,Webdriver 的API更容易理解和使用,其可读性和可维护性也大大提高。Webdriver完全就是一套类库,不依赖于任何测试框架,除了必要的浏览器驱动,不需要启动其他进程或安装其他程序,也不必像Selenium 1那样需要先启动服务。

支持浏览器

  1. Firefox (FirefoxDriver)
  2. IE(InternetExplorerDriver)
  3. Opera(OperaDriver)
  4. Chrome (ChromeDriver)
  5. safari(SafariDriver)

支持语言

  1. Java
  2. C#
  3. PHP
  4. Python
  5. Perl
  6. 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()
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值