一、搭建环境
本文默认已经有python环境,并且能看懂python。(不会的可以百度,Python环境还是很好搭建的)
以下实验都是在python2.7环境下运行的
(1)安装selenium
在python安装目录的Scripts下(比如我的是:D:\program files\python2.7.0\Scripts)运行命令行,并输入以下命令安装:
pip install -U selenium
搭建java环境(这里也不多说,自行百度)
下载selenium的服务端(下载地址:http://selenium-release.storage.googleapis.com/2.53/selenium-server-standalone-2.53.0.jar)
解压,然后在selenium-server-standalone-2.53.0.jar的目录下使用命令java -jar selenium-server-standalone-2.53.0.jar 启动。
在本文中还用不到服务端,所以可以暂时不启动。
(2)安装chrome driver
chrome driver下载地址:http://chromedriver.storage.googleapis.com/index.html?path=2.7/
解压后,将chromedriver.exe文件放在chrome的安装目录下的Application文件夹下(比如我的是:C:\Program Files (x86)\Google\Chrome\Application)
然后设置path环境变量,把chrome的安装目录(比如我的是:C:\Program Files (x86)\Google\Chrome\Application)添加到path中。
然后使用下列程序来测试一下:
-
# coding=utf-8
-
from selenium import webdriver
-
driver = webdriver.Chrome()
-
driver.get('http://www.baidu.com')
-
print driver.title
-
driver.quit()
可能出现的错误:
1. chromedriver.exe文件被杀毒软件删掉,程序运行后报错:找不到路径。
解决方法:在杀毒软件中为chromedriver.exe添加信任
2. 提示Chrome version的问题,版本过旧
解决方法:给Chome升级,右上角的三点->帮助->关于Google Chrome->版本更新
二、使用程序自动在百度中输入搜索词进行搜索
-
# coding=utf-8
-
from selenium import webdriver
-
import time
-
# 打开chrome浏览器
-
driver = webdriver.Chrome()
-
# 输入网址,打开www.baidu.com
-
driver.get('http://www.baidu.com')
-
# 找到id=kw的输入框,输入selenium
-
driver.find_element_by_id("kw").send_keys("selenium")
-
# 找到id=su的按钮,进行点击
-
driver.find_element_by_id("su").click()
-
# 睡眠5秒
-
time.sleep(5)
-
# 关闭浏览器
-
driver.quit()
三、使用程序自动登录新浪微博
-
# coding=utf-8
-
from selenium import webdriver
-
from selenium.webdriver.common.keys import Keys
-
import time,os
-
# 打开chrome浏览器
-
driver = webdriver.Chrome()
-
# 输入网址,打开www.baidu.com
-
driver.get('http://weibo.com')
-
driver.maximize_window()
-
driver.implicitly_wait(20)
-
# 有的输入框可能有默认的一些提示值,先将框中的值删掉
-
# driver.find_element_by_id("loginname").clear()
-
# 找到id=loginname的输入框,输入用户名
-
driver.find_element_by_name("username").send_keys("18606146174")
-
# Keys.TAB相当于模拟处于账号框时使用TAB键然后移动到下面的密码框
-
driver.find_element_by_name("username").send_keys(Keys.TAB)
-
time.sleep(2)
-
# 输入密码
-
driver.find_element_by_name("password").send_keys("a123456")
-
# 定位到密码框,然后敲回车(enter)
-
driver.find_element_by_name("password").send_keys(Keys.ENTER)
-
# 睡眠5秒
-
time.sleep(5)
-
# 关闭浏览器
-
driver.quit()
在不添加
-
driver.maximize_window()
-
driver.implicitly_wait(20)
这两行代码时,会出现下面这个错误
可能是由于页面没有加载完整造成的,通过放大浏览器,使用智能等待,然后再去找相应id或name的元素。
四、其他的用法
(1)webdriver提供了一些列的对象定位方法,常用的有:id,name,class name,link text, partial link text,tag name, xpath, css selector
拿百度的输入框作为例子:
-
# coding=utf-8
-
from selenium import webdriver
-
from selenium.webdriver.common.keys import Keys
-
import time,os
-
# 打开chrome浏览器
-
driver = webdriver.Chrome()
-
# 输入网址,打开www.baidu.com
-
driver.get('http://www.baidu.com')
-
# 通过id方式定位
-
driver.find_element_by_id("kw").send_keys("selenium")
-
# 通过name方式定位
-
driver.find_element_by_name("wd").send_keys("selenium")
-
# 通过tag name方式定位
-
driver.find_element_by_tag_name("input").send_keys("selenium")
-
# 通过class name方式定位
-
driver.find_element_by_class_name("s_ipt").send_keys("selenium")
-
# 通过css方式定位
-
driver.find_element_by_css_selector("#kw").send_keys("selenium")
-
# 通过xpath方式定位
-
driver.find_element_by_xpath("//input[@id='kw']").send_keys("selenium")
-
driver.find_element_by_id("su").click()
-
time.sleep(3)
-
# 关闭浏览器
-
driver.quit()
(2)智能等待
通过添加implicitly_wait()方法就可以方便的实现智能等待;
implicitly_wait(30)的用法应该比time.sleep()更智能,后者智能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待。
-
import time
-
driver.implicitly_wait(30)
(3)打印title
print driver.title # 把页面titile打印出来
(4)浏览器最大化
driver.maximize_window() #将浏览器最大化显示
(5)设置浏览器宽、高
driver.set_window_size(480,800) #设置浏览器宽480、高800显示
(6)操作测试对象
一般webdriver中比较常用的操作对象的方法有下面几个
click 点击对象
send_keys 在对象上模拟按键输入
clear 清除对象的内容,如果可以的话
submit 提交表单
(7)鼠标事件
ActionChains类
context_click() 右击
double_click() 双击
drag_and_drop() 拖动
--------------------- 本文来自 小拳头 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/xiaoquantouer/article/details/52574129?utm_source=copy