python - 如何使用 Selenium 和 Python 切换窗口句柄

标签 python selenium selenium-webdriver webdriverwait window-handles

如果您单击 Web 浏览器以外的 Windows 程序中的链接,则会出现一个弹出窗口。我想获取这个弹出窗口的网址。弹出窗口只能在 IE 中打开。

driver = webdriver.Ie('C://Users/aaa/IEDriverServer.exe')
driver.implicitly_wait(3)
pyautogui.moveTo(1576, 660)
pyautogui.click()
time.sleep(3)
driver.switch_to_window(driver.window_handles[1])
   # error =>driver.switch_to_window(driver.window_handles[1])
   #         IndexError: list index out of range
driver.get_window_position(driver.window_handles[1])

windows = driver.window_handles
   # Commenting out the above two lines will result in only one active web 
   # browser in windows.
print(windows)

driver = webdriver.Ie('C://Users/seula/IEDriverServer.exe')
driver.implicitly_wait(3)
pyautogui.moveTo(1576, 660)
pyautogui.click()
time.sleep(3)
driver.switch_to_window(driver.window_handles[1])
   # error =>driver.switch_to_window(driver.window_handles[1])
   #         IndexError: list index out of range
driver.get_window_position(driver.window_handles[1])

windows = driver.window_handles
   # Commenting out the above two lines will result in only one active web 
   # browser in windows.
print(windows)

在此源代码中,运行 IEDriver.exe 将打开一个本地主机窗口,当您使用 pyautogui 单击 Windows 程序的链接时,该窗口会弹出。 但是,如果我检查 driver.window_handles,则仅显示本地主机窗口,并且无法识别弹出窗口。如何获取弹出窗口的 url?

最佳答案

我通常使用send_keys()而不是click()来处理弹出窗口。

尝试使用以下代码:

pyautogui.send_keys(Keys.CONTROL + Keys.ENTER)
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + "2")
# window_handles[-1] refer to last window created.
driver.switch_to.window(self.driver.window_handles[-1])
url = driver.current_url
print(url)

关于python - 如何使用 Selenium 和 Python 切换窗口句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57567464/

相关文章:

python - 流式传输前 BigQuery 表截断不起作用

java - TestNG 多个测试类 - 运行其他类

c# - 使用C#使用Selenium查找视频是否可用

python - Django url反向和正则表达式

python - 是什么导致了这个 python 脚本执行时间的差异?

python - 如何使用 PIL Python 添加文本后保留图像的原始颜色?

javascript - 如何使用 java selenium 将 sendKeys 用于 ckeditor 文本区域

jquery - 使用 selenium webdriver 单击 jquery 菜单项

python - 美丽汤图像刮刀问题

javascript - Webdriver:Google 快讯选项的自动化