警告框处理
在WebDriver中处理JavaScript所生成的alert、confirm以及prompt十分简单,具体做法是使用 switch_to.alert 方法定位到 alert/confirm/prompt,然后使用text/accept/dismiss/ send_keys等方法进行操作。
-
text:返回 alert/confirm/prompt 中的文字信息。
-
accept():接受现有警告框。
-
dismiss():解散现有警告框。
-
send_keys(keysToSend):发送文本至警告框。keysToSend:将文本发送至警告框。
如下,百度搜索设置弹出的窗口是不能通过前端工具对其进行定位的,这个时候就可以通过switch_to_alert()方法接受这个弹窗。
from selenium import webdriver # 引入 ActionChains 类 from selenium.webdriver.common.action_chains import ActionChains #导入提供鼠标操作的 ActionChains 类,也可from selenium.webdriver import ActionChains import time driver = webdriver.Chrome() #设置隐式等待时间为10秒 driver.implicitly_wait(10) driver.get('https://www.baidu.com') #鼠标悬停至“设置”链接 link = driver.find_element_by_link_text('设置') ActionChains(driver).move_to_element(link).perform() #打开搜索设置 driver.find_element_by_link_text('搜索设置').click() #保存设置 driver.find_element_by_class_name("prefpanelgo").click() time.sleep(2) #接受警告框 driver.switch_to.alert.accept() # switch_to_alert()方法获取当前页面上的警告框,并使用accept()方法接受警告框。 driver.quit()
下拉框选择
WebDriver提供了Select类来处理下拉框。 如百度搜索设置的下拉框,如下:
Select类用于定位select标签。
select_by_value() 方法用于定位下接选项中的value值。
from selenium import webdriver from selenium.webdriver.support.select import Select from time import sleep driver = webdriver.Chrome() #设置隐式等待时间为10秒 driver.implicitly_wait(10) driver.get('https://www.baidu.com') #鼠标悬停至“设置”链接 driver.find_element_by_link_text('设置').click() sleep(1) #打开搜索设置 driver.find_element_by_link_text("搜索设置").click() sleep(2) #搜索结果显示条数 sel = driver.find_element_by_xpath("//select[@id='nr']") Select(sel).select_by_value('50') #显示50条 Select类用于定位select标签,select_by_value() 方法用于定位下接选项中的value值。 driver.quit()