使用 Selenium Webdriver 无法打开超过最大数量的选项卡?
Can't open more than max number of tabs with Selenium Webdriver?
我正在尝试打开一个不同 URL 的列表,每个标签打开一个,但是当数量超过 20 ~ 21 时,停止打开标签。
我已经尝试将列表分成 20 个一组,并创建了 webdriver 的新实例,并且效果很好,但我想知道这是否是一种使用相同的方式启用更多选项卡的方法实例?
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get('https://whosebug.com/')
for i in range(30):
driver.execute_script("window.open('');")
print(len(driver.window_handles))
time.sleep(3)
driver.quit()
我尝试一次打开 30 个标签页,但只打开了 21 个。
我正在使用 python 3.5.0、Firefox 68.0.2 和 geckodriver 0.24.0
如果您查看 Whosebug 选项卡,您应该会看到一个黄色条,表明其余部分已被弹出窗口阻止程序阻止。 (发生这种情况是因为 execute_script
在网页上下文中运行脚本。)
要覆盖,请将 dom.popup_maximum 首选项设置为更大的值:
opts = webdriver.FirefoxOptions()
opts.set_preference("dom.popup_maximum", 50)
driver = webdriver.Firefox(options=opts)
请不要使用 "window.open()" 来获取新标签或 windows 打开。而是使用新的 WebDriver New Window API,它已经集成了所有最新版本的官方 Selenium 绑定。请注意,它还不是所有驱动程序的一部分,但对于最近的 Firefox 版本,它可以工作。
鉴于您正在使用 Python 绑定,可以使用以下内容:
driver.switch_to.new_window('tab')
通过使用这种方法,打开大量标签页应该不会受到限制。
我正在尝试打开一个不同 URL 的列表,每个标签打开一个,但是当数量超过 20 ~ 21 时,停止打开标签。
我已经尝试将列表分成 20 个一组,并创建了 webdriver 的新实例,并且效果很好,但我想知道这是否是一种使用相同的方式启用更多选项卡的方法实例?
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get('https://whosebug.com/')
for i in range(30):
driver.execute_script("window.open('');")
print(len(driver.window_handles))
time.sleep(3)
driver.quit()
我尝试一次打开 30 个标签页,但只打开了 21 个。 我正在使用 python 3.5.0、Firefox 68.0.2 和 geckodriver 0.24.0
如果您查看 Whosebug 选项卡,您应该会看到一个黄色条,表明其余部分已被弹出窗口阻止程序阻止。 (发生这种情况是因为 execute_script
在网页上下文中运行脚本。)
要覆盖,请将 dom.popup_maximum 首选项设置为更大的值:
opts = webdriver.FirefoxOptions()
opts.set_preference("dom.popup_maximum", 50)
driver = webdriver.Firefox(options=opts)
请不要使用 "window.open()" 来获取新标签或 windows 打开。而是使用新的 WebDriver New Window API,它已经集成了所有最新版本的官方 Selenium 绑定。请注意,它还不是所有驱动程序的一部分,但对于最近的 Firefox 版本,它可以工作。
鉴于您正在使用 Python 绑定,可以使用以下内容:
driver.switch_to.new_window('tab')
通过使用这种方法,打开大量标签页应该不会受到限制。