Selenium 小技巧之弹出框及下拉框的处理
01 弹出框的处理
在WebDriver中处理JavaScript生成的alert
、confirm
和prompt
十分简单。具体的做法是,首先使switch_to.alert()
方法定位,然后使用text、accept、dismiss、send_keys等进行操作。
txt
返回alert、confirm、prompt中的文字信息。accept()
接受现有警告框。dismiss()
解散现有警告框。send_keys()
在警告框中输入文本(如果被允许的话)。
这里以百度的搜索设置中的弹出框为例,进行演示说明:
import time
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.baidu.com/')
# 打开百度的搜索设置
link = browser.find_element_by_link_text('设置').click()
browser.find_element_by_link_text('搜索设置').click()
time.sleep(2)
# 保存设置的信息
browser.find_element_by_class_name('prefpanelgo').click()
time.sleep(2)
# 获取警告框
alert = browser.switch_to.alert
# 获取警告框的提示信息
alert_text = alert.text
print(alert_text)
# 接受警告框
alert.accept()
time.sleep(1)
browser.quit()
02 下拉框的处理
下拉框是Web页面常见功能之一,WebDriver提供了Select类来处理下拉框相关的操作。
Select
类 用于定位<select>
标签。select_by_value()
通过value值定位下拉选项。select_by_visible_text()
通过text值定位下拉选项。select_by_index()
根据下拉选项的索引进行选择。注意是从0开始的。
这里仍以百度的搜索设置项为例,来演示说明:
import time
from selenium import webdriver
from selenium.webdriver.support.select import Select
browser = webdriver.Chrome()
browser.get('https://www.baidu.com/')
# 打开百度的搜索设置
link = browser.find_element_by_link_text('设置').click()
browser.find_element_by_link_text('搜索设置').click()
time.sleep(2)
# 搜索结果显示条数
sel = browser.find_element_by_xpath("//select[@id='nr']")
# value = "20"
Select(sel).select_by_value('20')
time.sleep(2)
# <option>每页显示50条</option>
Select(sel).select_by_visible_text("每页显示50条")
time.sleep(2)
# 根据下拉选项的进行选择
Select(sel).select_by_index(0)
time.sleep(2)
browser.quit()