我试图打开一个不同的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
答案 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')
通过这种方法,打开很多标签应该没有限制。