Selenium WebDriver浏览器自动化测试

1 什么是selenium

其实selenium就是一个自动化的工具,它里边包含着API以及很多自动化工具。这里讲述的就是我最近接触的WebDriver语言绑定和各个浏览器控制代码的实现(说白了,就是运行一个文件,浏览器会自己打开并且自己进行下一步操作)。WebDriver 以本地化方式驱动浏览器,就像用户在本地或使用 Selenium 服务器的远程机器上所做的那样,这标志着浏览器自动化的飞跃。

1.1 安装

pip install selenium

1.2 浏览器驱动

这个驱动呢,你得先看看你使用的是什么浏览器,目前它只有Chrome,Edge,Firefox,IE,Safari浏览器,根据自己使用的浏览器去安装驱动。

# 导包
from selenium import webdriver
# 绑定浏览器驱动
driver = webdriver.Chrome(executable_path="chromedriver.exe")
# 获取要操作的网址
driver.get("操作的网址")
# 最大化窗口
driver.maximize_window()

2 语法

根据HTML里有的属性来定位该元素。find_element_by 和 find_elements_by 的区别就是,前者返回的是单个的对象,后者返回的是一个列表

2.1 input 输入

例如:

<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">

这里可以使用 xpath,id,name,class和标签名来对input框进行定位

# 根据 id 来定位
driver.find_element_by_id("kw")
driver.find_elements_by_id("kw")
# 根据 name 来定位
driver.find_element_by_name("wd")
driver.find_elements_by_name("wd")
# 根据 class 来定位
driver.find_element_by_class_name("s_ipt")
driver.find_elements_by_class_name("s_ipt")
# 根据 标签名 来定位
driver.find_element_by_tag_name("input")
driver.find_elements_by_tag_name("input")
# 根据 xpath 来定位 @后面可以跟name,class等
driver.find_element_by_xpath("//input[@name='wd']")

定位完之后,要往输入框里输入文字,使用的呢就是 send_keys 这个关键字。

# 获取webdriver对象
element = driver.find_elements_by_id("kw")
# 使用 send_keys 来输入自己想要的内容
element.send_keys("要输入的内容")

或者也可以连在一起写

# 获取webdriver对象,使用 send_keys 来输入自己想要的内容
driver.find_elements_by_id("kw").send_keys("要输入的内容")

2.2 click 点击事件

在selenium.webdriver里能触发click事件的,不只是有button,还有div,label等。它们跟上面的也是一样的定位方法,不过我个人比较推荐的是 xpath 的方法。因为这个方法比较准。这里呢就用 xpath 的方式来定位 button,然后进行click

<button type="button" class="button" >搜索</button>

定位

# 使用 xpath 的方式进行定位
element = driver.find_element_by_xpath("//button[@class='button']")
# 使用 click() 来进行点击
element.click()

当然,也可以连起来写

# 使用 xpath 的方式进行定位,使用 click() 来进行点击
driver.find_element_by_xpath("//button[@class='button']").click()

2.3 select 选择器

其实 select 的定位与前面的定位方式都是大差不差的,只是之后 options 里边选项的内容得做一下处理。这里呢有一个包是专门来处理选择器的也就是Select

<select  id="sid" onchange="selectcity()">
   	<option>---请选择---</option>
   	<option>湖南</option>
   	<option>湖北</option>
   	<option>浙江</option>
   	<option>广东</option>
</select>

使用 Select 来进行处理

from selenium.webdriver.support.ui import Select
import random
# 使用 xpath 来定位元素
element = driver.find_element_by_xpath("//select[@id='sid']")
# 使用 Select 来对 select中的option进行处理
# 获取下拉框
select = Select(element)
# 获取下拉框中所有选项
options = select.option
# 先生成一个随机的选项值
rand_index = random.randint(0, len(options) - 1)
# 选中这个选项值
select.select_by_index(rand_index)

如果你知道选项的值的,也根据select_by_visible_text()来进行选择

select.select_by_visible_text(value)

3 难点

1. 一样的标签名里,属性都一样,只有显示的文字不一样

遇到这种情况呢,如果你想要选择其中一个呢,你可以给 xpath 后面加一个[数字],看看你想要选的是第几个。或者可以先把一样内容的元素定位出来使用 ‘find_elements_by_xpath’ 这样的话,返回的就是一个列表。根据列表的长度来
随机选择。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值