Nut*_*tan 6 selenium window-handles python-3.x selenium-webdriver webdriverwait
我有一个网页,点击后会打开新的浏览器窗口。我可以获得 2 个句柄,但是 driver.close() 总是关闭第一个/主窗口。
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("file:///D:/blackhole/print.html")
han = driver.window_handles
print("handles:", han) # gets 1 handle
time.sleep(2)
click_btn = driver.find_element_by_link_text('Print')
click_btn.click()
han = driver.window_handles
print("handles:", han) # gets 2 handles
driver.switch_to_window = han[1] # first element is always first window handle
driver.close() # main window close
Run Code Online (Sandbox Code Playgroud)
下面的网页代码调用新窗口
<a href="print.html"
onclick="window.open('popprint.html',
'newwindow',
'width=300,height=250');
return false;"
>Print</a>
Run Code Online (Sandbox Code Playgroud)
Firefox 也有同样的行为。Python 3.6.7
Selenium无法关闭活动窗口,即新打开的窗口,因为实际上您还没有以干净的方式切换到新打开的窗口。
关于选项卡/窗口切换/处理的几句话:
switch_to_window(window_name)现在已被弃用相当长一段时间了,您需要使用driver.switch_to.windownumber_of_windows_to_be(num_windows)之间切换之前一样。expected_conditionstitle_contains("partial_page_title")这是您自己的代码,上面提到了一些细微的调整:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox(executable_path=r'C:\WebDrivers\geckodriver.exe')
driver.get("file:///D:/blackhole/print.html")
parent_han = driver.window_handles
driver.find_element_by_link_text('Print').click()
WebDriverWait(driver, 10).until(EC.number_of_windows_to_be(2))
all_han = driver.window_handles
new_han = [x for x in all_han if x != parent_han][0]
driver.switch_to.window(new_han)
driver.close()
Run Code Online (Sandbox Code Playgroud)您可以在Selenium Switch Tabs中找到详细讨论
| 归档时间: |
|
| 查看次数: |
13812 次 |
| 最近记录: |