Python + Selenium 小技巧之弹出框及下拉框的处理

Selenium 小技巧之弹出框及下拉框的处理

01 弹出框的处理

在WebDriver中处理JavaScript生成的alertconfirmprompt十分简单。具体的做法是,首先使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()

文章作者: &娴敲棋子&
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 &娴敲棋子& !
评论
  目录