python爬虫学习:selenium(2)

14 篇文章 2 订阅
5 篇文章 1 订阅

一、选择框(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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

黄思博呀

真的有人打赏啊,超级感谢!

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

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

打赏作者

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

抵扣说明:

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

余额充值