IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> python爬虫学习:selenium(2) -> 正文阅读

[开发测试]python爬虫学习:selenium(2)

一、选择框(radio、checkbox和select)处理

radio选择框:

长这样:

标签特点:

<input type="radio">

selenium实现点击:

from selenium import webdriver
driver=webdriver.Firefox()
driver.find_element_by_xpath('').click() #浏览器中复制radio元素的xpath

checkbox框:

长这样:

元素特点:

<input type="checkbox" >
#处于选中状态的checkbox框有属性:checked="checked"

?同样是用click()方法进行勾选或取消勾选

select框:

长这样:

元素的html格式:

<select id="s1">
<option value="-1">--SELECT--</option>
<option value="46">Business Phone</option>
<option value="47">Cell Phone</option>
<option value="48">Email</option>
<option value="49">Fax</option>
<option value="51">Home Phone</option>
<option value="50">Mail</option>
</select>

selenium提供特定的Select类进行元素定位

导入Select类:

from selenium.webdriver.support.select import Select

定位select框:

s=Select(driver.find_element_by_id("s1") #定位select框

查看一个select元素内有哪些options,利用属性options

s1=Select(driver.find_element_by_id("si"))  #定位select元素
for element in s1.options:
    print(element.text)   #获取每个option元素的text属性

选择select框内选项的方法,不需要再写click():

s.select_by_index(1)  #定位第二个option元素
s.select_by_value("49")  #根据<option value="49">进行定位
s.select_by_visible_text("Fax")  #根据<option>fax</option>进行定位

?一些select标签里有multiple="multiple"的键值对,这些selectt框可以进行选项多选:

<select id="s4Id" multiple="multiple" size="6">
<option></option>
<option value="o1val">o1</option>
<option value="o2val">o2</option>
<option value="o3val">o3</option>
<option value="o4val">    With spaces</option>
<option value="o4val">&nbsp;&nbsp;&nbsp;&nbsp;With nbsp</option>
</select>

?打印出当前所有选中的选项(主要用于可以多选的select元素),利用属性all_selected_options:

s1=Select(driver.find_element_by_id("s4Id"))
s1.select_by_value("o1val")
s1.select_by_value("o2val")
s1.select_by_value("o3val")   #选中三个选项
for selected_element in s1.all_selected_options:
    print(selected_element.text)

二、javascript弹窗(alert、comfirm、prmpt)的处理

alert弹窗:

<a href='javascript:alert("提示框")' id="alert">Alert</a>

当点击这个a元素时,就会弹出带有字符“提示框”的弹窗:

selenium对alert弹窗的处理:

driver.find_element_by_id("Alert").click()  #点击,弹出alert弹窗
alert=driver.switch_to.alert     #将焦点集中到alert弹窗
print(alert.text)    #返回弹窗的文本信息
alert.accpet()      #模拟点击弹窗的确定按钮

comfirm弹窗:

<a href='javascript:confirm("真的要删除数据吗?")' id="confirm">Confirm</a>

点击这个a元素,弹出confirm弹窗:

selenium对confirm弹窗的处理:

driver.find_element_by_id("confirm").click()  #点击触发弹窗的元素
confirm=driver.switch_to.alert    #方法相同,将焦点集中到弹窗
print(confirm.text)    #打印confirm弹窗里的文本信息
confirm.accept()   #模拟点击弹窗里的确定
confirm.dismiss()   #模拟点击弹窗里的取消

prompt弹窗:

<a href='javascript:var age=prompt("请输入年龄");document.write(age)' id="prompt">Prompt</a>

这里定义一个变量age用来接prompt()的返回值,点击这个a元素,弹出prompt弹窗:

?

?selenium对prompt弹窗的处理:

driver.find_element_by_id("prompt").click()
prompt=driver.switch_to.alert
print(prompt.text)
prompt.send_keys("20")   #在弹窗的输入框内输入20
prompt.dismiss()
#prompt.accept()

三、selenium的等待机制

强制等待

直接使用time.sleep()方法进行等待,固定的休眠时间会降低代码运行的效率。

隐性等待

设置一段超时时间,若是超出这段时间,元素没有被加载出来,就会报错异常信息。若是在超时时间内页面元素加载完毕,也不会有像time.sleep()的强制等待性能。

driver.get("https://www.baidu.com/")
driver.implicitly_wait(5)    #使用隐式等待等待页面加载,超时时间设置为5s
try:
    driver.find_element_by_id("kw").send_keys("python")
    driver.find_element_by_id("su").click()
except Exception as e:
    print(e)

显式等待

设置一个超时时间,在这段时间内,会频繁的检查指定元素是否成功加载。同样若是超出设置的超时时间,元素依旧没有被检查到,就抛出异常信息,而若是在规定的超时时间内,元素成功加载,就会继续下面的代码,同样没有time.sleep()的强制性。

完成显式等待的类为webDriverWait

完成对等待过程中检查指定元素是否加载,否则抛出异常的类为expected_conditions

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC  

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 5, 0.5)  #设置超时时间5s,检查频率为每0.5s一次
wait.until(EC.title_is("百度一下,你就知道"),message='超时啦!')

这里每0.5s检查页面内指定的title标签是否加载(轮询),若是在5s内成功加载,则继续下面的代码,否则抛出异常信息"超时啦!"

四、html标签和元素的区别:

标签由尖括号组成,一般成对存在,由开始标签和结束标签组成

<div>和</div>

标签也可以单独存在

<input type="text" />
<!--或者:-->
<img src="xxx.jpg" />

元素是从开始标签到结束标签之间的内容,下面就是一个元素

<title>这是一个标题</title>

五、常见的标签:

文本输入框:

<input type="text" value="'test" />
<!--一个输入框,框里的提示字符是"test"-->

checkbox选择框:

<!--可以多选-->
<input type="checkbox" />语文
<input type="checkbox" />数学
<!--若是添加name键值对,多选变单选-->
<input type="checkbox" name="subject" />语文
<input type="checkbox" name="subject" />数学

radio选择框:

<input type="radio" name="" />语文
<!--同样添加name键值对变成多选一-->

按钮:

<input type="button" value="登录"/>

?文件上传:

<input type="file" />

密码输入框:

<input type="password" />

下拉框:

<select>
<option>text1</option>
<option>text2</option>
</select>
<!--option元素是下拉框的选项-->

超链接:

<a href="https://xxx'>text</a>

表格:

<table>
<tr><td>col1</td><td>col2</td>
<tr><td>col1</td><td>col2</td>
</table>
<!-- tr内为一行,td内为一列-->

图片:

<img src="" width="200" height="300">
<!--src内可以是本地的图片地址,也可以是网络上的图片地址-->
<!--添加width、height键值对,设置图片大小>

文本域:

<textarea rows="10" cols="7"></textarea>
<!--设置一个10行7列的可以输入文本的区域-->

加粗标签:

<b>test</b>

换行:

<br>

段落:

<p>这是一个段落</p>
<p>这是另一个段落</p>

注释:

<!--这是一个注释-->

内嵌网页标签iframe:

<iframe src="https://xxx" width="200" height="400"></iframe>

参考链接:

selenium之 下拉选择框Select_huilan_same的博客-CSDN博客_selenium下拉框选择

Selenium自动化测试全套教程,手把手带你从入门到高级实战,涨薪必看!_哔哩哔哩_bilibili

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-07-21 21:48:56  更:2022-07-21 21:49:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/26 21:23:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码