python webdriver之切换页面及切换下拉框

本文介绍了在使用Python的webdriver进行自动化测试时,如何处理页面切换和下拉框选择的问题。首先展示了如何获取并打印当前页面句柄,以便在打开新窗口后进行切换。接着讨论了在新窗口中如何处理弹窗,特别是利用Select类来操作下拉框,并提到了警告框的处理方法,如alert的dismiss()和accept()。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在平时打开浏览器页面时,点击会调转另一个页面,这时需要用到windows来继续自动化操作。首先要获取页面当前句柄,如下例子,这里就打开了两个窗口页面
在这里插入图片描述

  1. 用代码获取句柄并打印
#打开浏览器
driver = webdriver.Chrome()
# 打开百度
driver.get("https://baidu.com")
# 最大化窗口
driver.maximize_window()
#鼠标移到“更多”
gd=driver.find_element_by_xpath('//a[text()="更多"]')
#实例化ActionChains类
ac = ActionChains(driver)
#将鼠标移动到“更多”
ac.move_to_element(gd)
#调用perform执行命令
ac.perform()
#鼠标移到“学术”并点击
driver.find_element_by_link_text("学术").click()
time.sleep(3)
#切换到学术页面,判断当前句柄
handles=driver.window_handles
print(handles)

接下来我们就可以切换到新生的页面,继续操作下一步

#切换到学术页面,判断当前句柄
handles=driver.window_handles
  1. 在新增的页面中,有时候会涉及弹窗的处理
#点击弹窗“我知道了”
driver.find_element_by_xpath('//*[@id="line_content"]/div[1]/div/div[1]/div[5]/span').click()
# #点击学术页面的设置
driver.find_element_by_xpath('//a[text()="设置"]').click()
#选择搜索设置
driver.find_element_by_xpath('//*[@id="setpref"]').click()
  1. 在这里会用到一个下拉框选择的类Select
from selenium.webdriver.support.ui import Select  #引入类 
#定位下拉列表元素
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.ID,'nr')))
xlk = driver.find_element_by_id("nr")
#通过下标选择(从0开始)select_by_index(index)
time.sleep(2)
Select(xlk).select_by_index(2) #选50条
#通过value属性 select_by_value(value值)
time.sleep(2)
Select(xlk).select_by_value("10") #选20条
#通过文本内容 select_by_visible_text(文本内容)
time.sleep(2)
Select(xlk).select_by_visible_text("每页显示20条")#选10条
  1. 还有警告框的处理alert.dismiss()和alert.accept()
#点击保存设置,打印当前警告窗口内容
driver.find_element_by_xpath('//a[text()="保存设置"]').click()
time.sleep(2)
alert = driver.switch_to.alert #或者可以用alert=driver。switch_to_aler
print(alert.text)#text后面不用加(),会报错str类型不对
# #取消弹出框
# #alert.dismiss()
#确定弹出框
alert.accept()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值