Selenium Webdriver无法打开超过最大数量的标签吗?

时间:2019-08-21 23:38:41

标签: python selenium firefox geckodriver

我试图打开一个不同的URL列表,每个选项卡打开一个URL,但是当数量超过20〜21时,请停止打开选项卡。

我尝试将列表分成20组,并创建webdriver的新实例,效果很好,但是我想知道这是否是使用同一实例启用更多标签页的方法吗?

from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.get('https://stackoverflow.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

2 个答案:

答案 0 :(得分:0)

如果您查看stackoverflow标签,您应该看到一个黄色的条,表明其余的已被弹出窗口阻止程序阻止。 (这是因为execute_script在网页的上下文中运行脚本。)

要覆盖,请将dom.popup_maximum首选项设置为较大的值:

opts = webdriver.FirefoxOptions()
opts.set_preference("dom.popup_maximum", 50)
driver = webdriver.Firefox(options=opts)

答案 1 :(得分:0)

请不要使用“ window.open()”来打开新的标签页或窗口。而是使用新的WebDriver New Window API,该API已集成了所有最新版本的官方Selenium绑定。请注意,它还不是所有驱动程序的一部分,但是对于最新的Firefox版本,它可以工作。

鉴于您正在使用Python绑定,可以使用以下内容:

driver.switch_to.new_window('tab')

通过这种方法,打开很多标签应该没有限制。