python webdriver操作浏览器

一.webdriver简介

Selenium是ThroughtWorks公司开发的一套Web自动化测试工具。
它分为三个组件:
Selenium IDE
Selenium RC (Remote Control)
Selenium Webdriver
Selenium IDE是firefox的一个插件,允许测试人员录制脚本并回放。
Selenium RC和Selenium Webdriver是测试框架,提供多种语言的API。不同的是,Selenium Webdriver以一种更底层、更灵活的方式来操作浏览器,并不仅仅使用JavaScript。这样它可以绕开浏览器的沙箱限制,实现Selenium RC不支持的框架、弹出窗口、页面导航、下拉菜单、基于AJAX的UI元素等控件的操作。以及,Selenium Webdriver不需要本地服务器。
Selenium 1.x版本只包含前两个组件。从2.0开始Webdriver加入其中。
主要是来解决https的加密问题

二.使用

Webdriver在使用之前,需要下载一个浏览器所对应用的驱动插件,请根据自己不同的浏览器版本,进行下载:
这里使用的是谷歌浏览器,可以在网上进行搜索下载,并把chromdriver放在google.exe那个当前目录下面。

python webdriver操作浏览器_第1张图片

1.例子:打开某网址
#导入模块import os
import time
from selenium import webdriver

#指定下载插件的位置
chromedriver = "c:\/users\youjianjun\AppData\Local\Google\Chrome\Application\chromedriver.exe"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)

#定义要访问的页面
url = "http://www.python.org"#打开
driver.get(url)#打开页面后停止3秒
time.sleep(3)#关闭页面
driver.quit()

运行之后会自动打开浏览器并访问填写的URL,在停止3秒后,页面自动关闭。

2.当能够自动打开页面后,下一步需要做的就是登陆了,那么这时候就要用到‘选择器‘了,它可以定位到页面上的输入框,然后进行操作。

八种选择器:
1. find_elements_by_name(“test”)
页面:

代码:
element = driver.find_elements_by_name(“passwd”)

2. find_elements_by_id()
element = driver.find_element_by_id(“passwd-id”)
By.tagname()
element = driver.find_element_by_tagname(“input”)

3. find_element_by_class_name(‘input-class’)

4. find_elements_by_tag_name(‘iframe’)
DOM的Tag元素
用Tag name 定位元素的例子:

element = driver.find_elements_by_tag_name("iframe")

5. find_element_by_link_text()

页面:
baidu
代码:
element = browser.find_elements_by_link_text("baidu")

6 xpath   这个特别强大,所有的元素都可以通过这个可以找到。
XPath是XML Path的简称,由于HTML文档本身就是一个标准的XML页面,所以我们可以使用XPath的语法来定位页面元素。
绝对路径: 根元素开始,及html开始用/      
相对路劲: 任意符合条件的元素 //
查找页面上所有的input元素://input
查找页面上第一个form元素内的直接子input元素(即只包括form元素的下一级input元素,使用绝对路径表示,单/号)://form[1]/input
查找页面上第一个form元素内的所有子input元素(只要在form元素内的input都算,不管还嵌套了多少个其他标签,使用相对路径表示,双//号)://form[1]//input
查找页面上第一个form元素://form[1]
查找页面上id为loginForm的form元素://form[@id='loginForm']
查找页面上具有name属性为username的input元素://input[@name='username']
查找页面上id为loginForm的form元素下的第一个input元素://form[@id='loginForm']/input[1]
查找页面具有name属性为contiune并且type属性为button的input元素://input[@name='continue'][@type='button']
查找页面上id为loginForm的form元素下第4个input元素://form[@id='loginForm']/input[4]

控件操作:
输入框;
element.clear()  清空输入框数据
element.sendkeys(“username”)   发送数据
element.text         获取文本的值
按钮:
element.click()

表单提交
element.submit()

单选和多选框
element.clear()
element = browser.find_elements_by_id(' checkbox')
##选择某个单选项:
element.click();

常用方法:
browser.get_cookies()
browser.title           头名字
browser.close()
forward()
前进,browser.foeward()
.back()
后退,browser.back()
.refresh()
刷新,browser.refresh()
.current_url
返回当前页面url,browser.current_url
例子:自动登陆京东。
分析:我们先打开京东的登陆页面,使用浏览器的检查的功能进行相关的操作。(在页面的任意一处右键点击,然后点击检查,会出现下图的状态)
python webdriver操作浏览器_第2张图片
1.登陆分为扫码登陆及账户登陆,我们首先要做的就是让它自动点击到账户登陆的页面。
鼠标放到账户登陆上,右键点击,然后点击检查,下边就会跳转到‘账户登陆’的代码上,然后使用此代码进行搜索,就能够定位了。
2.进入到账户登录页面后,就需要找到‘账户’及‘密码’的信息了。

跟上面的一样,鼠标放到账户的输入框上,右键点击检查,下面就会显示,我们就可一进行定位了。

代码:
#导入模块import os
import random
import time
from selenium import webdriver

#定义暂停时间
def Timesleep(min,max):
    time.sleep((max-min) * random.random() + min)

#访问的网址
url = "https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F"#插件位置
chromedriver = "c:\/users\youjianjun\AppData\Local\Google\Chrome\Application\chromedriver.exe"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)

#打开
driver.get(url=url)#暂停1-2秒
Timesleep(1,2)

#使用xpath定位到 ‘账户登录’ ,然后跳转。
driver.find_elements_by_xpath("//a[@clstag='pageclick|keycount|login_pc_201804112|10']")[0].click()
Timesleep(1,2)

#定位到账户的输入框
driver.find_element_by_id("loginname").clear()
Timesleep(1,2)

#向输入框中填入账户信息
driver.find_element_by_id("loginname").send_keys("账户信息")
Timesleep(1,2)

#定位密码的输入框
driver.find_element_by_id("nloginpwd").clear()
Timesleep(1,2)

#填入密码信息
driver.find_element_by_id("nloginpwd").send_keys("密码")
Timesleep(1,2)

#定位登录按钮,进行登录
driver.find_element_by_id("loginsubmit").click()
Timesleep(5,10)

#获取登录的cookies信息
print(driver.get_cookies())

#关闭
driver.quit()

运行之后可以看见,自动输入账户,密码,并进行登录。



你可能感兴趣的:(python)