selenium之frame切换、窗口切换及各种选择框和弹出框

frame切换

一般来讲,我们无法直接通过webdriver对象拿到frame或者iframe中的元素,这时我们就需要切换到frame或者iframe中去,方法为调用webdriver对象的switch_to.frame()方法。方法里面可以传入iframe和frame的id等属性值用以选择出该frame。
具体如下:browser.switch_to.frame(browser.find_element_by_id("frame1"))frame1为其id值
想要切换回原来的主html。需要用到switch_to.default_content()方法,语法如下:
browser.switch_to.default_content()

窗口切换

和上面差不多,但是需要用到的方法时driver对象的switch_to.window()方法,其有一个参数就是要跳转到的窗口的窗口句柄。driver对象有一个window_handles属性,其可以返回当前浏览器打开的窗口的所有的窗口句柄,为一个列表形式。
如果想要跳到某个窗口,我们可以遍历这个列表,不断的跳转到这个列表中的窗口,直到找到我们想要跳转的窗口后跳出循环(遍历)即可。
示例:

for handle in browser.handles: # 遍历所有的窗口句柄
	browser.switch_to.window(handle) #尝试切换到遍历到的窗口进行查找
	if "百度一下,你就知道" in browser.title: #说明已经切换到百度首页窗口,跳出遍历
		break

除上面的变量外,也可以将这个句柄列表元素保存为自己熟知的一个字典或者列表,可以方便后面的切换。

radio选择框

先选择出相应的web_element元素,然后点击他即可选中。

checkbox选择框

对于多选框,与radio不同的是,先要去掉已选中的框,其特征为checked="checked",然后再选中自己想选中的值即可。

select选择框

select框和其他框不同的是,select框的元素名为select,而上面的都是input,对于select选择框,selenium提供了一个Select类,其提供了几个选值的方法:

  1. select_by_value():根据value属性选择
  2. select_by_index():根据次序选择
  3. select_by_visible_text():根据html文本选择
  4. deselect_by_value():根据value去掉选中(不选中该元素)的元素
  5. deselect_by_index():根据次序去掉选中(不选中该元素)的元素
  6. deselect_by_visible_text():根据html文本去掉选中(不选中该元素)的元素
  7. deselect_all():去掉所有选中的元素

select类的使用方法:

from selenium.webdriver.support.ui import Select
select = Select(browser.find_element_by_id("singleid"))


#然后就可以通过select对象调用Select类中的方法对id为singleid的元素进行操作。
一些其他的操作元素的方法

对于一些特殊的操作,比如双击、移动鼠标到某个元素、鼠标拖拽等操作的实现可以通过selenium提供的ActionChains类来实现。
ActionChains类提供了一些特殊的动作模拟。这里以移动到某个元素为例:

from selenium.webdriver.common.action_chains import ActionChains
browser = webdriver.Firefox()
browser.get("http:www.baidu.com")
# 将webdriver对象作为参数传入ActionChains中。
ac = ActionChains(browser)

# 将鼠标移动到id为su的元素。
ac.move_to_element(browser.find_element_by_id("su")).perfom()
冻结界面

冻结界面的js代码:setTimeout(function(){debugger},5000)这段代码表示在5000ms后执行debug命令,且进入debug状态后,界面会被冻结。这个在查看一些界面元素时很有用。

弹出框的处理

1、alert弹出框:browser.switch_to.alert.accept()即可点击alert弹出框的确定按钮;因为不点击他页面的其它元素无法操作。
2、confirm弹出框

  1. 接受,或者确定继续操作:browser.switch_to.alert.accept()
  2. 拒绝,停止当前操作:browser.switch_to.alert.dismiss()

3、prompt弹出框:

  1. 确定执行操作
    alert = browser.switch_to.alert
    alert.send_keys("这些写入自己想要填入prompt输入框的内容")
    alert.accept() # 表示确定继续执行当前操作,即点击确定按钮
  1. 取消操作
    alert = browser.switch_to.alert
    alert.dismiss() # 表示取消当前操作,即点击Cancel按钮
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Selenium 可以模拟处理弹出框,一般有以下几种情况: 1. Alert 弹出框:可以使用 `switch_to.alert` 方法切换弹出框,然后使用 `accept()` 或 `dismiss()` 方法确认或取消弹出框。 示例代码: ```python from selenium import webdriver driver = webdriver.Chrome() # 打开网页 driver.get("https://www.baidu.com") # 点击弹出 Alert 按钮 alert_btn = driver.find_element_by_id("alert_button") alert_btn.click() # 切换到 Alert 弹出框 alert = driver.switch_to.alert # 确认 Alert 弹出框 alert.accept() # 关闭浏览器 driver.quit() ``` 2. Confirm 弹出框:与 Alert 弹出框类似,可以使用 `switch_to.alert` 方法切换弹出框,然后使用 `accept()` 或 `dismiss()` 方法确认或取消弹出框。不同的是,Confirm 弹出框会询问用户是否确定操作。 示例代码: ```python from selenium import webdriver driver = webdriver.Chrome() # 打开网页 driver.get("https://www.baidu.com") # 点击弹出 Confirm 按钮 confirm_btn = driver.find_element_by_id("confirm_button") confirm_btn.click() # 切换到 Confirm 弹出框 confirm = driver.switch_to.alert # 确认 Confirm 弹出框 confirm.accept() # 关闭浏览器 driver.quit() ``` 3. Prompt 弹出框:与 Confirm 弹出框类似,可以使用 `switch_to.alert` 方法切换弹出框,然后使用 `send_keys()` 方法输入数据,使用 `accept()` 或 `dismiss()` 方法确认或取消弹出框。不同的是,Prompt 弹出框会让用户输入一些数据。 示例代码: ```python from selenium import webdriver driver = webdriver.Chrome() # 打开网页 driver.get("https://www.baidu.com") # 点击弹出 Prompt 按钮 prompt_btn = driver.find_element_by_id("prompt_button") prompt_btn.click() # 切换到 Prompt 弹出框 prompt = driver.switch_to.alert # 输入数据 prompt.send_keys("Hello, World!") # 确认 Prompt 弹出框 prompt.accept() # 关闭浏览器 driver.quit() ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值