Selenium入门详细教程

本文详细介绍了Selenium与Python结合进行自动化测试的基础知识,包括selenium的安装、webdriver驱动浏览器的配置与操作,如定位元素、窗口操作、处理弹窗等。还涉及到显式等待和隐式等待的使用,帮助读者掌握网页自动化测试的关键技能。
摘要由CSDN通过智能技术生成

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
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老师好,我是刘同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值