Selenium + python学习记录
文章目录
前言
学python,做自动化测试,selenium是我们必然要学习的一个自动化测试框架。
一、selenium的安装
因为我们使用的是python+selenium的测试结构,我们这里就直接使用python来安装selenium,因为这里我们可以理解selenium为python的一个库。
pip install selenium
我们有python环境的可以直接使用上面的命令安装。
二、webdriver驱动浏览器
0. 安装浏览器驱动
Firefox浏览器驱动:Firfox
Chrome浏览器驱动:Chorme
IE 浏览器驱动:IE
Edge 浏览器驱动:Edge
PhantomJS 浏览器驱动:PhantomJS
Opera 浏览器驱动:Opera
safari浏览器驱动使用链接:link
将 chromedriver.exe 保存到任意位置,并把当前路径保存到环境变量中(我的电脑>>右键属性>>高级系统设置>>高级>>环境变量>>系统变量>>Path),添加的时候要注意不要把 path 变量给覆盖了,如果覆盖了千万别关机,然后百度。添加成功后使用下面代码进行测试。
1.使用selenium+python打开百度搜索谷歌
from selenium import webdriver
#导入webdriver,我们通过这个驱动可以直接打开我们电脑的谷歌浏览器,不仅是谷歌浏览器,selenium支持的浏览器还有很多
import time
webdriver = webdriver.Chrome()#除谷歌浏览器外,还支持IE,火狐,safari,基本上主流的浏览器都支持
#此处是实例化一个谷歌浏览器,运行后,电脑就会打开谷歌浏览器
webdriver.get("http://www.baidu.com")#打开指定网站
webdriver.find_element_by_id('kw').click()
#这里是通过ID来定位百度的搜索框,我们要确认ID在当前网页上是唯一的
#百度源码:<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
webdriver.find_element_by_id('kw').send_keys("google")
#定位到了输入框,我们输入我们想要搜索的信息,这里是google
webdriver.find_element_by_id('su').click()
#也是通过id定位元素,源码:<input type="submit" id="su" value="百度一下" class="bg s_btn">
time.sleep(2)
webdriver.find_element_by_link_text(u'Google').click()
#定位链接文本,文本为Google,并且是附带链接的文本
webdriver.switch_to.window(webdriver.window_handles[1])
time.sleep(10)
webdriver.close()
我们来逐行解释这些代码。
2. selenium定位元素的16种方法
webdriver.find_element #通过指定方法查找指定的一个元素(需指定两个参数)
webdriver.find_element_by_class_name #通过Class name查找指定的一个元素
webdriver.find_element_by_css_selector #通过CSS选择器查找指定的一个元素
webdriver.find_element_by_id #通过ID查找指定的一个元素
webdriver.find_element_by_link_text #通过链接文本获取指定的一个超链接(精确匹配)
webdriver.find_element_by_name #通过Name查找指定的一个元素
webdriver.find_element_by_partial_link_text #通过链接文本获取指定的一个超链接(模糊匹配)
webdriver.find_element_by_tag_name #通过标签名查找指定的一个元素
webdriver.find_element_by_xpath #通过Xpath语法来指定的一个元素
webdriver.find_elements #通过指定方法查找所有元素(需指定两个参数)
webdriver.find_elements_by_class_name #通过Class name查找所有元素
webdriver.find_elements_by_css_selector #通过CSS选择器查找所有元素
webdriver.find_elements_by_id #通过ID查找所有元素
webdriver.find_elements_by_link_text #通过链接文本获取所有超链接(精确匹配)
webdriver.find_elements_by_name #通过Name查找所有元素
webdriver.find_elements_by_partial_link_text #通过链接文本获取所有超链接(模糊匹配)
webdriver.find_elements_by_tag_name #通过标签名查找所有元素
webdriver.find_elements_by_xpath #通过Xpath语法来查找所有元素
我们通过网页id定位元素就有三种方法
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
webdriver = webdriver.Chrome()
webdriver.get("http://www.baidu.com")
webdriver.find_element_by_id('kw')
webdriver.find_element(By.ID,'kw')
webdriver.find_elements_by_id('kw')[0]
3. 获取日志
c = webdriver.Chrome()
c.log_types #获取当前日志类型
c.get_log('browser')#浏览器操作日志
c.get_log('driver') #设备日志
c.get_log('client') #客户端日志
c.get_log('server') #服务端日志
4. 窗口操作
c.maximize_window()#最大化
c.fullscreen_window() #全屏
c.minimize_window() #最小化
c.get_window_position() #获取窗口的坐标
c.get_window_rect()#获取窗口的大小和坐标
c.get_window_size()#获取窗口的大小
c.set_window_position(100,200)#设置窗口的坐标
c.set_window_rect(100,200,32,50) #设置窗口的大小和坐标
c.set_window_size(400,600)#设置窗口的大小
c.current_window_handle #返回当前窗口的句柄
c.window_handles #返回当前会话中的所有窗口的句柄
5. 设置延时
c.set_script_timeout(5) #设置脚本延时五秒后执行
c.set_page_load_timeout(5)#设置页面读取时间延时五秒
6. 关闭窗口
c.close() #关闭当前标签页
c.quit() #关闭浏览器并关闭驱动
7. 打印网页源码
c.page_source
8. 屏幕截图
c.save_screenshot('1.png')#截图,只支持PNG格式
c.get_screenshot_as_png() #获取当前窗口的截图作为二进制数据
c