Selenium切换窗口,使用js命令
Posted 越长大越孤单哦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium切换窗口,使用js命令相关的知识,希望对你有一定的参考价值。
多窗口切换
在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要主机切换到新打开的窗口上进行操作。
WebDriver提供了switch_to.window()方法,可以实现在不同的窗口之间切换。 以百度首页和百度注册页为例,在两个窗口之间的切换如下图。
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
# 获得百度搜索窗口句柄
sreach_windows = driver.current_window_handle
driver.find_element_by_link_text(\'登录\').click()
driver.find_element_by_link_text("立即注册").click()
# 获得当前所有打开的窗口的句柄
all_handles = driver.window_handles
# 进入注册窗口
for handle in all_handles:
if handle != sreach_windows:
driver.switch_to.window(handle)
print(\'now register window!\')
driver.find_element_by_name("account").send_keys(\'username\')
driver.find_element_by_name(\'password\').send_keys(\'password\')
time.sleep(2)
# ……
driver.quit()
打开新的窗口
window_handles :返回当前会话中所有窗口的句柄
switch_to.window(x):切换到x窗口
例句:
handls=self.driver.window_handles
self.driver.switch_to.window(handls[-1])
time.sleep(2)
警告框处理
在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:将文本发送至警告框。
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get(\'http://www.baidu.com\')
# 鼠标悬停至“设置”链接
link = driver.find_element_by_link_text(\'设置\')
ActionChains(driver).move_to_element(link).perform()
# 打开搜索设置
driver.find_element_by_link_text("搜索设置").click()
time.sleep(1)
# 保存设置
driver.find_element_by_class_name("prefpanelgo").click()
time.sleep(2)
# 接受警告框
print(driver.switch_to.alert.text)
driver.switch_to.alert.accept()
调用JavaScript代码
js="window.scrollTo(100,450);"
driver.execute_script(js)
以上是关于Selenium切换窗口,使用js命令的主要内容,如果未能解决你的问题,请参考以下文章