如果您单击 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/