正常情况下selenium打开新标签页代码:
driver.get("https://www.baidu.com") # 第一个标签页
newwindow = 'window.open("https://www.taobao.com")' # 第二个标签页
driver.execute_script(newwindow)
driver.switch_to_window(driver.window_handles[1]) # 切换到第二个标签页句柄
driver.switch_to_window(driver.window_handles[0]) # 切换回第一个标签页
- 报错原因:两个不同网址的网站,第二个新打开的网站对referer进行了验证,如果直接从第一个网站运行js代码打开第二个网站,会导致referer验证失败,此时直接打开第二个标签页会报错url referer验证失败
- 解决方法:可以先在第二个标签页打开一个空白标签,空白标签不会对referer进行验证,然后在空白标签页打开新的网址,这种方式能够正常打开,代码如下:
driver.get("https://www.baidu.com") # 第一个标签页
newwindow = 'window.open("")' # 打开空白标签页
driver.execute_script(newwindow)
driver.switch_to_window(driver.window_handles[1]) # 切换到第二个标签页句柄
driver.get("https://www.taobao.com") # 在当前标签页打开网址