selenium安装及使用

selenium教程:
http://www.testclass.net/selenium_python

一、selenium安装
1、安装:

pip install selenium

2、安装后,出现下图错误:


在这里插入图片描述

解决办法:安装Selenium3浏览器驱动,并设置环境变量。
驱动下载路径: http://chromedriver.storage.googleapis.com/index.htmlhttp://npm.taobao.org/mirrors/chromedriver/ (版本必须对应)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

将下载的zip包解压得到一个chromedriver.exe文件,该文件仅需放到Chrome浏览器安装目录下,无需安装。如下图,我的Chrome浏览器安装在C:\Program Files (x86)\Google\Chrome\Application目录,将解压后的chromedriver.exe驱动文件复制到该目录下即可。

在这里插入图片描述

然后将浏览器环境变量添加到path:打开开始菜单->计算机->属性->高级系统设置->高级->环境变量->系统变量里的path->编辑->在变量值的最后面添加;C:\Program Files (x86)\Google\Chrome\Application->确定保存配置。
若仍不行,则将chromedriver.exe复制到Python安装目录中与python.exe同级的目录中。
若还不行,则在打开Google浏览器的代码中将webdriver.Chrome()写成webdriver.Chrome(executable_path = ‘C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe’)即可。

二、selenium常用方法
1、打开浏览器,加载页面:

from selenium import webdriver
driver = webdriver.Firefox()   		# Firefox浏览器
driver = webdriver.Chrome()    		# Chrome浏览器
driver.get(www.baidu.com) 			# 打开百度

2、元素定位:
Selenium提供了8种定位方式:id,name,class name,tag name,link text,partial link text,xpath,css selector
这8种定位方式在Python selenium中所对应的方法为:find_element_by_id(),find_element_by_name(),find_element_by_class_name(),find_element_by_tag_name(),find_element_by_link_text(),find_element_by_partial_link_text(),find_element_by_xpath(),find_element_by_css_selector()
例如:

elem = driver.find_element_by_id('search')  		#找到id为search的元素
xpath = ""
title = driver.find_element_by_xpath(xpath).text   	#通过xpath找到一个元素的text
#同样可以定位一组元素,注意是elements,结果为一个list
texts = driver.find_elements_by_xpath('//div/h3/a')

3、浏览器操作:

driver.back() 								# 后退
driver.forward() 							# 前进
driver.quit()  								# 关闭所有窗口
driver.close()  							# 关闭单个窗口
driver.refresh() 							# 刷新页面

4、WebDriver方法:

input = driver.find_element_by_id("kw")
input.clear()  								# 清除文本
input.send_keys("selenium")  				# 模拟按键输入,在输入框中输入值
driver.find_element_by_id("su").click()  	# 单击元素
attribute = driver.find_element_by_id("tag_a").get_attribute('href') # 获取标签属性

5、键盘操作:

# 删除多输入的一个字符
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
# ctrl+a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'a')
# 通过回车键来代替单击操作
driver.find_element_by_id("su").send_keys(Keys.ENTER)

6、设置元素等待:
WebDriverWait类是由WebDirver 提供的等待方法。在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
element = WebDriverWait(driver, 5, 0.5).until(EC.presence_of_element_located((By.ID, "kw")))
element.send_keys('selenium')
driver.quit()

7、表单切换:
比如126邮箱登录,想要操作登录框必须要先切换到登录框的iframe表单。

from selenium import webdriver
driver = webdriver.Chrome()										# 打开谷歌浏览器
driver.get("http://www.126.com")								# 打开网站
driver.switch_to.frame('x-URS-iframe') 							# 切换到登录表单
driver.find_element_by_name("email").clear()					# 清空账号框
driver.find_element_by_name("email").send_keys("username")		# 输入账号
driver.find_element_by_name("password").clear()					# 清空密码框
driver.find_element_by_name("password").send_keys("password")	# 输入密码
driver.find_element_by_id("dologin").click()					# 点击登录
driver.switch_to.default_content() 								# 跳回最外层页面
driver.quit()													# 关闭所有窗口

8、窗口切换:

from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
# 获得当前窗口句柄
sreach_windows = driver.current_window_handle
driver.find_element_by_link_text('登录').click()		#点击链接文本“登录”
driver.find_element_by_link_text("立即注册").click()
# 获得当前所有打开的窗口的句柄
all_handles = driver.window_handles
# 进入注册窗口
for handle in all_handles:
    if handle != sreach_windows:
        driver.switch_to.window(handle)  			#用于切换到相应的窗口
        print('now register window!')
        driver.find_element_by_name("account").send_keys('username')
        driver.find_element_by_name('password').send_keys('password')
        time.sleep(2)
driver.quit()

9、警告框处理:

# switch_to_alert()方法获取当前页面上的警告框,accept()方法接受警告框
driver.switch_to.alert.accept()

当然,selenium还有文件上传、获取cookie、执行js等方法,如果需要可以搜索 http://www.testclass.net/selenium_python

猜你喜欢

转载自blog.csdn.net/qq_38882327/article/details/89135441