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命令的主要内容,如果未能解决你的问题,请参考以下文章

python selenium打开新窗口,多窗口切换

web自动化6-selenium多窗口切换及JS对话框处理

selenium中三大窗口切换

自动化测试:Selenium高级操作

Selenium JavascriptExecutor 详解

Selenium如何使用句柄方式切换窗口?