,,Python Selenium库的基本使用教程

,,Python Selenium库的基本使用教程

本文主要介绍Python Selenium库的基本使用教程,通过示例代码非常详细的介绍,对你的学习或者工作有一定的参考价值。有需要的朋友就跟着下面的边肖学习吧。

目录

硒基金会1。硒简介

2.支持多种操作系统

3.安装Selenium

4.安装浏览器驱动程序

5.配置环境变量

(二)硒简介1。Selenium提供了八种定位方法:

2.8种定位元素的方法

3.示例演示

4.4 . web driver模块常用方法的使用。硒库

摘要

硒基金会

入门教程:Selenium官网教程

1.1简介。硒

Selenium是一个用于测试网站的自动化测试工具。支持包括Chrome、Firefox、Safari等主流界面浏览器在内的各种浏览器,也支持phantomJS无界面浏览器。

2.支持多种操作系统

如Windows、Linux、IOS、Android等。

3.安装Selenium

pip安装硒

4.安装浏览器驱动程序

Selenium3.x调用浏览器必须有webdriver驱动文件。

Chromedrive文件下载:点击下载chrome drive。

Firefox驱动文件下载:点击下载geckodriver。

5.配置环境变量

设置浏览器的地址非常简单。我们可以手动创建一个存放浏览器驱动的目录,比如:F:\GeckoDriver,把下载的浏览器驱动文件(比如:chromedriver,GeckoDriver)扔到这个目录里。

我的电脑—属性—系统设置—高级—环境变量—系统变量—路径,将“F:\GeckoDriver”目录添加到Path的值中。例如:路径字段;女:\壁虎

请参考浏览器驱动的环境配置

(2)硒快速启动

简介:硒的介绍

1.Selenium提供了八种定位方法:

身份证明(identification)

名字

类别名

标签名称

链接文本

部分链接文本

xpath

css选择器

2.8种定位元素的方法

参考:硒元素定位

定位一个元素。

定位多个元素

意义

按标识查找元素

按标识查找元素

按元素id定位

按名称查找元素

按名称查找元素

按元素名称定位。

通过xpath查找元素

通过xpath查找元素

通过xpath表达式定位

通过链接文本查找元素

通过链接查找元素

通过完整超链接定位。

查找元素部分链接文本

查找元素部分链接文本

通过部分链接定位

按标签名查找元素

按标签名查找元素

按标签定位

按类名查找元素

按类名查找元素

通过类名定位。

通过css选择器查找元素

通过css选择器查找元素

通过css选择器定位

3.示例演示

假设我们有一个网页,一个元素的属性可以通过这样的前端工具(比如Firebug)查看。

超文本标记语言

body link='#0000cc '

a href='/' rel=' external no follow ' onmousedown=' return c({ ' FM ':' tab ',' tab':'logo'})'

form name='f' action='/s '

span /span

输入名称='wd '值='' maxlength='255 '自动完成='off '

按id定位:

dr.find_element_by_id('kw ')

按名称定位:

dr . find _ element _ by _ name(“wd”)

按类名定位:

dr . find _ element _ by _ class _ name(' s _ ipt ')

通过标签名称定位:

dr.find_element_by_tag_name('输入')

通过xpath定位,xpath定位有n种写法。以下是编写XPath定位的一些常用方法:

dr . find _ element _ by _ XPath('//*[@]')

dr . find _ element _ by _ XPath('//*[@ name=' wd ']')

dr . find _ element _ by _ XPath('//input[@]')

dr . find _ element _ by _ XPath('/html/body/form/span/input ')

dr . find _ element _ by _ XPath('//span[@]/input ')

dr . find _ element _ by _ XPath('//form[@]/span/input ')

dr . find _ element _ by _ XPath('//input[@ and @ name=' wd ']')

通过css定位,css定位可以有n种写法。以下是几种常见的方式:

dr . find _ element _ by _ CSS _ selector(' # kw ')

dr . find _ element _ by _ CSS _ selector('[name=wd]')

dr . find _ element _ by _ CSS _ selector('。s _ ipt’)

dr . find _ element _ by _ CSS _ selector(' html正文表单跨度输入)

通过CSS选择器(' span。soutu-BTN输入# kw’)

dr . find _ element _ by _ CSS _ selector('表单#表单范围输入)

接下来,我们的页面上有一组文本链接。

a href=' http://新闻。百度一下。com ' rel='外部无关注' name=' TJ _ tr新闻'新闻/a

a href=' http://www。郝123。com ' rel=' external no follow ' name=' TJ _ tr Hao 123 ' Hao 123/a

通过链接文本定位:

' dr.find_element_by_link_text('新闻)

博士find _ element _ by _ link _ text('郝123 ')

通过部分链接文本定位:

' dr . find _ element _ by _ partial _ link _ text('新)

' dr . find _ element _ by _ partial _ link _ text('郝)

dr . find _ element _ by _ partial _ link _ text(' 123 ')

4.硒库下网络驱动模块常用方法的使用

1.控制浏览器操作的一些方法

方法

说明

set_window_size()

设置浏览器的大小

后退()

控制浏览器后退

向前()

控制浏览器前进

刷新()

刷新当前页面

清除()

清除文本

发送键(值)

模拟按键输入

单击()

单击元素

提交()

用于提交表单

获取属性(名称)

获取元素属性值

已显示()

设置该元素是否用户可见

大小

返回元素的尺寸

文本

获取元素的文本

实例演示

从硒导入网驱动程序

从时间进入睡眠

#1.创建铬浏览器对象,这会在电脑上在打开一个浏览器窗口

浏览器=网络驱动程序.Firefox(executable _ path=' F:\ GeckoDriver \ GeckoDriver ')

#2.通过浏览器向服务器发送统一资源定位器请求

浏览器。得到(' https://www。百度一下。com/')

睡眠(3)

#3.刷新浏览器

浏览器。刷新()

#4.设置浏览器的大小

浏览器。设置窗口大小(1400800)

#5.设置链接内容

元素=浏览器。'查找元素链接文本('新闻)

element.click()

元素=浏览器。find _ element _ by _ link _ text(' "下团组"时间)

element.click()

2.鼠标事件

在网络驱动中,将这些关于鼠标操作的方法封装在行动链类提供。

方法

说明

动作链(驱动程序)

构造行动链对象

上下文点击()

执行鼠标悬停操作

移动到元素(以上)

右击

双击()

双击

拖放()

拖动

移动到元素(以上)

执行鼠标悬停操作

上下文点击()

用于模拟鼠标右键操作,在调用时需要指定元素定位

执行()

执行所有行动链中存储的行为,可以理解成是对整个操作的提交动作

实例演示

从硒导入网驱动程序

#1.引入行动链类

从硒。网络驱动。常见。动作链导入操作链

#1.创建铬浏览器对象,这会在电脑上在打开一个浏览器窗口

driver=webdriver .Firefox(executable _ path=' F:\ GeckoDriver \ GeckoDriver ')

driver.get('https://www.baidu.com ')

#2.定位到要悬停的元素

元素=驱动程序。'查找元素链接文本('设置)

#3.对定位到的元素执行鼠标悬停操作

动作链(驱动程序)。移动到元素(元素)。执行()

#找到链接

elem 1=驾驶员。'查找元素链接文本('搜索设置)

elem1.click()

#通过元素选择器找到id=sh_2,并点击设置

elem 2=驾驶员。按标识查找元素(' sh _ 1 ')

elem2.click()

#保存设置

elem 3=驱动程序。find _ element _ by _ class _ name(' prefpanelgo ')

elem3.click()

3.键盘事件

硒中的钥匙模块为我们提供了模拟键盘按键的方法,那就是发送键()方法。它不仅可以模拟键盘输入,也可以模拟键盘的操作。

常用的键盘操作如下:

模拟键盘按键

说明

发送键(按键。后退_空格)

删除键(退格键)

发送键(按键。空格)

空格键(空格)

发送键(按键。选项卡)

制表键(选项卡)

发送键(按键。逃)

回退键(Esc)

发送键(按键。回车)

回车键(回车)

组合键的使用

模拟键盘按键

说明

发送键(按键。控制,“一”)

全选(Ctrl A)

发送键(按键。控制,“c”)

复制(Ctrl+C)

发送键(按键。控件,“x”)

剪切(Ctrl X)

发送键(按键。控制,“v”)

粘贴(Ctrl V)

发送键(按键F1…Fn)

键盘F1…Fn

4.获取断言信息

不管是在做功能测试还是自动化测试,最后一步需要拿实际结果与预期进行比较。这个比较的称之为断言。通过我们获取标题、网址和文本等信息进行断言。

属性

说明

标题

用于获得当前页面的标题

当前网址

用户获得当前页面的统一资源定位器

文本

获取搜索条目的文本信息

实例演示

从硒导入网驱动程序

从时间进入睡眠

driver=webdriver .Firefox(executable _ path=' F:\ GeckoDriver \ GeckoDriver ')

driver.get('https://www.baidu.com ')

打印('搜索前==============')

# 打印当前页面标题

标题=驱动程序。标题

打印(标题)

# 打印当前页面统一资源定位器

现在网址=驱动程序。当前网址

打印(现在_网址)

driver.find_element_by_id('kw ').send_keys('硒)

driver.find_element_by_id('su ').单击()

睡眠(1)

打印('搜索后==============')

# 再次打印当前页面标题

标题=驱动程序。标题

打印(标题)

# 打印当前页面统一资源定位器

现在网址=驱动程序。当前网址

打印(现在_网址)

# 获取结果数目

用户=司机。find _ element _ by _ class _ name(' nums ')。文本

打印(用户)

#关闭所有窗口

driver.quit()

打印输出结果

搜索前================

百度一下,你就知道

https://www.baidu.com/

搜索后================

硒_百度搜索

https://www.baidu.com/s?ie=utf-8f=8 RSV _ BP=0 RSV _ idx=1tn=Baidu wd=seleniumrsv _ pq=a1 d51 b 980000 e 36 ersv _ t=a 715 iz ampd 1 w 92 I 4 l nui 7 gkuodlaz 5 mcche/slqebzd 44 ouipnjy+7 podmrqlang=cnrsv _ enter=0 RSV _ sug 3=8 inputt=758 RSV _ sug 4=1

搜索工具

百度为您找到相关结果约7,170,000个

5.设置元素等待:参考文献

6.定位一组元素

定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在单词元素后面多了一个s表示复数。

实例演示

从硒导入网驱动程序

从时间进入睡眠

driver=webdriver .Firefox(executable _ path=' F:\ GeckoDriver \ GeckoDriver ')

driver.get('https://www.baidu.com ')

driver.find_element_by_id('kw ').send_keys('硒)

driver.find_element_by_id('su ').单击()

睡眠(1)

#1.定位一组元素

元素=驱动因素。find _ elements _ by _ XPath('//div/H3/a ')

打印(类型(元素))

#2.循环遍历出每一条搜索结果的标题

对于元素中的t:

打印(文本)

元素=驱动程序。查找元素链接文本

element.click()

睡眠(3)

driver.quit()

7.多表单切换

在网应用中经常会遇到框架/iframe表单嵌套页面的应用,网络驱动程序只能在一个页面上对元素识别与定位,对于框架/iframe表单内嵌页面上的元素无法直接定位。这时就需要通过switch_to.frame()方法将当前定位的主体切换为框架/iframe表单的内嵌页面中。

方法

说明

switch_to.frame()

将当前定位的主体切换为框架/iframe表单的内嵌页面中

switch_to.default_content()

跳回最外层的页面

超文本标记语言

身体

.

内联框架.

超文本标记语言

身体

.

输入名称='电子邮件'

126邮箱登录框的结构大概是这样子的,想要操作登录框必须要先切换到内联框架表单。

从硒导入网驱动程序

driver=webdriver .铬合金()

driver.get('http://www.126.com ')

司机。切换到。框架(' x-URS-iframe ')

司机。按名称查找元素('电子邮件').清除()

司机。按名称查找元素('电子邮件').send_keys('用户名)

司机。find _ element _ by _ name('密码').清除()

司机。find _ element _ by _ name('密码').send_keys('密码)

driver . find _ element _ by _ id(' dolo gin ')。单击()

driver . switch _ to . default _ content()

driver.quit()

Switch_to.frame()默认可以直接取表单的id或name属性。如果iframe没有可用的id和name属性,可以通过以下方式找到它。

……

#首先通过xpth导航到iframe

xf=driver . find _ element _ by _ XPath('//*[@]')

#然后将锚定对象传递给switch_to.frame()方法。

driver.switch_to.frame

……

driver.switch_to.parent_frame()

8.多窗口切换

在页面操作过程中,有时点击一个链接会弹出一个新窗口,需要主机切换到新打开的窗口进行操作。WebDriver提供了switch_to.window()方法,可以在不同的窗口之间切换。

方法

解释

当前窗口句柄

获取当前窗口句柄。

窗口_句柄

将所有窗口的句柄返回到当前会话。

switch _ to.window()

用于切换到相应的窗口,类似于上一节的switch_to.frame()。前者用于不同窗口之间的切换,后者用于不同窗体之间的切换。

Switch_to.window()用于切换到对应的窗口,类似于上一节的switch_to.frame()。前者用于不同窗口之间的切换,后者用于不同窗体之间的切换。

示例演示

从selenium导入web驱动程序

导入时间

driver=webdriver。Chrome(' F:\ Chrome \ Chrome driver \ Chrome driver))

driver . implicit _ wait(10)

driver.get('http://www.baidu.com ')

#1.获取百度搜索窗口的句柄

sreach _ windows=driver . current _ window _ handle

driver . find _ element _ by _ link _ text(' log in ')。单击()

driver . find _ element _ by _ link _ text(“立即注册”)。单击()

#1.获取所有当前打开的窗口的句柄。

all _ handles=driver . windows _ handles

#3.转到注册窗口

对于all_handles中的句柄:

如果处理!=sreach_windows:

driver.switch_to.window(句柄)

打印(“跳转到注册窗口”)

driver . find _ element _ by _ name(' account ')。send_keys('123456789 ')

driver . find _ element _ by _ name(' password ')。send_keys('123456789 ')

时间.睡眠(2)

driver.quit()

9.警告框处理

在WebDriver中处理JavaScript生成的告警、确认、提示非常简单。具体方法是使用switch_to.alert方法定位报警/确认/提示,然后使用text/accept/miss/send _ keys等方法进行操作。

方法

解释

文本

在警告/确认/提示中返回文本信息。

接受()

接受现有的警告框

解散()

消除现有的警告框

send_keys(keysToSend)

向警告框发送文本。将文本发送到警告框。

示例演示

从selenium导入web驱动程序

从selenium . web driver . common . action _ chains导入操作链

导入时间

driver=webdriver。Chrome(' F:\ Chrome \ Chrome driver \ Chrome driver))

driver . implicit _ wait(10)

driver.get('http://www.baidu.com ')

#将鼠标移至“设置”链接

link=driver . find _ element _ by _ link _ text(' setting ')

动作链(驱动程序)。move_to_element(链接)。执行()

#打开搜索设置

driver . find _ element _ by _ link _ text('搜索设置')。单击()

#在此设置等待2s,否则可能会报告错误。

时间.睡眠(2)

#保存设置

driver . find _ element _ by _ class _ name(' prefpanelgo ')。单击()

时间.睡眠(2)

#接受警告框

driver.switch_to.alert.accept()

driver.quit()

10.下拉框选择操作

选择导入下拉框选择类,并使用该类处理下拉框操作。

从selenium . web driver . support . Select导入选择

Select类的方法

方法

解释

选择值(“选择值”)

选择标签的value属性的值。

Select_by_index("索引值")

下拉框的索引

Select_by_visible_testx("文本值")

下拉框的文本值。

有时候我们会遇到下拉框,WebDriver提供了Select类来处理下拉框。如百度搜索设置的下拉框,如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7 wuxrkej-1571973999629)(http://或ru5 lls 3。bkt。clouddn。com/select。png)]

从硒导入网驱动程序

从硒。网络驱动。支持。挑选导入选择

从时间进入睡眠

driver=webdriver .Chrome(' F:\ Chrome \ Chrome driver \ Chrome driver))

司机。隐式等待(10)

driver.get('http://www.baidu.com ')

#1.鼠标悬停至"设置"链接

司机。'查找元素链接文本('设置').单击()

睡眠(1)

#2.打开搜索设置

司机。'查找元素链接文本('搜索设置').单击()

睡眠(2)

#3.搜索结果显示条数

sel=驱动程序。find _ element _ by _ XPath('//select[@]')

选择(选择)。select_by_value('50') #显示50条

睡眠(3)

driver.quit()

11.文件上传

对于通过投入标签实现的上传功能,可以将其看作是一个输入框,即通过发送键()指定本地文件路径的方式实现文件上传。

通过发送键()方法来实现文件上传:

从硒导入网驱动程序

导入操作系统

driver=webdriver .火狐()

file _ path=' file:///' OS。路径。abspath(' upfile。html’)

driver.get(文件路径)

# 定位上传按钮,添加本地文件

司机。按名称查找元素('文件').send_keys('D:\\upload_file.txt ')

driver.quit()

12.cookie操作

有时候我们需要验证浏览器中甜饼干是否正确,因为基于真实甜饼干的测试是无法通过白盒和集成测试进行的网络驱动提供了操作饼干的相关方法,可以读取、添加和删除甜饼干信息。

网络驱动操作甜饼干的方法:

方法

说明

get _ cookies()

获得所有甜饼干信息

获取_cookie(名称)

返回字典的键为"名称"的甜饼干信息

添加cookie(cookie_dict)

添加饼干。" cookie_dict "指字典对象,必须有名字和价值值

delete_cookie(名称,选项字符串)

删除甜饼干信息"名字"是要删除的甜饼干的名称,"选项字符串"是该甜饼干的选项,目前支持的选项包括"路径","域"

delete _ all _ cookies()

删除所有甜饼干信息

实例演示

从硒导入网驱动程序

导入时间

浏览器=网络驱动程序.Chrome(' F:\ Chrome \ Chrome driver \ Chrome driver))

浏览器。get(' http://www。游东。com’)

#1.打印甜饼干信息

打印('================================')

打印('打印甜饼干信息为:')

打印(browser.get _ cookies)

#2.添加甜饼干信息

dict={'name':'name ',' value':'Kaina'}

browser.add_cookie(dict)

打印('================================')

打印('添加甜饼干信息为:')

#3.遍历打印甜饼干信息

对于browser.get_cookies()中的cookie:

打印(' %s - %s\n' %(cookie['name'],cookie['value']))

#4.删除一个甜饼干

browser.delete_cookie('name ')

打印('================================')

打印('删除一个cookie’)

对于browser.get_cookies()中的cookie:

打印(' %s - %s\n' %(cookie['name'],cookie['value']))

打印('================================')

打印('删除所有甜饼干后:')

#5.删除所有饼干,无需传递参数

browser.delete _ all _ cookies()

对于browser.get_cookies()中的cookie:

打印(' %s - %s\n' %(cookie['name'],cookie['value']))

时间。睡眠(3)

browser.close()

13.调用Java脚本语言代码

虽然网络驱动提供了操作浏览器的前进和后退方法,但对于浏览器滚动条并没有提供相应的操作方法。在这种情况下,就可以借助Java脚本语言来控制浏览器的滚动条网络驱动提供了执行脚本()方法来执行Java脚本语言代码。

用于调整浏览器滚动条位置的Java脚本语言代码如下:

!- window.scrollTo(左边距,上边距);-

window.scrollTo(0,450);

window.scrollTo()方法用于设置浏览器窗口滚动条的水平和垂直位置。方法的第一个参数表示水平的左间距,第二个参数表示垂直的上边距。其代码如下:

从硒导入网驱动程序

从时间进入睡眠

#1.访问百度

driver=webdriver .Firefox(executable _ path=' F:\ GeckoDriver \ GeckoDriver ')

driver.get('http://www.baidu.com ')

#2.搜索

driver.find_element_by_id('kw ')。send_keys('硒')

driver.find_element_by_id('su ')。单击()

#3.休眠2s的目的是获取服务器的响应内容,如果不使用休眠可能会报错。

睡眠(2)

#4.通过javascript设置浏览器窗口的滚动条位置

js='window.scrollTo(100,450);'

驱动程序执行脚本(js)

睡眠(3)

driver.close()

通过浏览器打开百度进行搜索,事先通过set_window_size()方法将浏览器窗口设置为固定宽度和高度显示,使窗口中出现水平和垂直滚动条。然后通过execute_script()方法执行JavaScripts代码来移动滚动条的位置。

滚动条上下左右滚动,进行代码演示。

从selenium导入web驱动程序

从时间进入睡眠

driver=webdriver。Firefox(executable _ path=' F:\ GeckoDriver \ GeckoDriver ')

driver.set_window_size(400,400)

driver.get('https://www.baidu.com ')

# 2 .搜索

# driver.find_element_by_id('kw ')。send_keys('硒')

# driver.find_element_by_id('su ')。单击()

#3.休眠2s的目的是获取服务器的响应内容,如果不使用休眠可能会报错。

睡眠(10)

#4向右滚动左右滚动条

js2=' var q=document . document element . scroll left=10000 '

驱动程序.执行脚本(js2)

睡眠(15)

#5向左滚动左右滚动条

js3=' var q=document . document element . scroll left=0 '

驱动程序.执行脚本(js3)

睡眠(15)

#6拖动到滚动条的底部-向下

js=' var q=document . document element . scroll top=10000 '

驱动程序执行脚本(js)

睡眠(15)

#7拖动到滚动条的底部-向上

js=' var q=document . document element . scroll top=0 '

驱动程序执行脚本(js)

睡眠(15)

driver.close()

14.窗口截图

自动化用例是由程序执行的,所以有时候打印出来的错误信息不是很清楚。如果能在脚本执行出错时保存当前窗口的截图,就能通过图片直观的看到出错的原因。WebDriver提供了截图函数get_screenshot_as_file()来截取当前窗口。

屏幕捕获方法:

方法

解释

get_screenshot_as_file(self,filename)

用于截取当前窗口并将图片保存在本地。

从selenium导入web驱动程序

从时间进入睡眠

driver=webdriver。Firefox(executable _ path=' F:\ GeckoDriver \ GeckoDriver ')

driver.get('http://www.baidu.com ')

driver.find_element_by_id('kw ')。send_keys('硒')

driver.find_element_by_id('su ')。单击()

睡眠(2)

#1.捕获当前窗口并指定保存截图的位置。

driver . get _ screen shot _ as _ file(' D:\ \ Baidu _ img . jpg ')

driver.quit()

15.关闭浏览器

在前面的例子中,我们一直使用quit()方法,意思是退出相关的驱动程序,关闭所有窗口。此外,WebDriver还提供了close()方法来关闭当前窗口。比如多窗口处理,当用例执行过程中打开了多个窗口,我们想关闭其中一个,那么就需要使用close()方法来关闭它。

方法

解释

关闭()

关闭单个窗口

退出()

关闭所有窗口。

总结

关于Python Selenium库的基本使用教程的这篇文章到此为止。有关Python Selenium库使用的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: