Selenium不会在新标签页中打开新网址(Python和Chrome)

Sam*_*123 8 python selenium google-chrome

我想使用Selenium WebDriver和Python在不同的选项卡中打开相当多的URL.

我不确定出了什么问题:

driver = webdriver.Chrome()
driver.get(url1)
time.sleep(5)
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL+'t')
url2 = 'https://www.google.com'
driver.get(item2)
Run Code Online (Sandbox Code Playgroud)

我查阅了教程,在我看来好像这段代码应该做我想要的.实际发生的是浏览器打开,url1打开,应该打开一个新选项卡,但是 url2然后加载到原始选项卡而不是新选项卡(即使新选项卡看起来是活动选项卡).

(我使用的是Chrome,因为在使用Firefox时我根本无法加载任何URL.Firefox会打开,但不会收到请求的网址.我试图找到解决方案,但无济于事.)

我可以在代码中更改任何内容以在新标签中打开新URL吗?

谢谢你的帮助!

小智 12

这是一个简单的方法,独立于平台:

码:

driver.execute_script("window.open('http://google.com', 'new_window')")
Run Code Online (Sandbox Code Playgroud)

切换回原始标签:

码:

driver.switch_to_window(driver.window_handles[0])
Run Code Online (Sandbox Code Playgroud)

检查当前标题以确保您在右侧页面:

码:

driver.title
Run Code Online (Sandbox Code Playgroud)

其他一切,玩得开心!

  • 我正在使用带有geckodriver 0.24.0的Firefox v67.0.4,它将打开一个新窗口,但没有一个新标签页 (2认同)

ale*_*cxe 11

ChromeDriver中存在一个错误,可防止ctrl/command + T工作:

作为一种解决方法,您可以执行的操作是在新选项卡中打开链接,然后使用该选项卡切换到新窗口switch_to.window().工作样本:

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("https://www.google.com")

# open a link in a new window
actions = ActionChains(driver)
about = driver.find_element_by_link_text('About')
actions.key_down(Keys.CONTROL).click(about).key_up(Keys.CONTROL).perform()

driver.switch_to.window(driver.window_handles[-1])
driver.get("https://stackoverflow.com")
Run Code Online (Sandbox Code Playgroud)

现在,最后一个driver.get()将在新打开的选项卡中执行.


Gem*_*tic 8

打开新窗口的另一种方法是使用JavaScript和窗口处理程序在它们之间切换.

driver = webdriver.Chrome()

# Open a new window
# This does not change focus to the new window for the driver.
driver.execute_script("window.open('');")

# Switch to the new window
driver.switch_to.window(driver.window_handles[1])
driver.get("http://stackoverflow.com")

# close the active tab
driver.close()

# Switch back to the first tab
driver.switch_to.window(driver.window_handles[0])
driver.get("http://google.se")

# Close the only tab, will also close the browser.
driver.close()
Run Code Online (Sandbox Code Playgroud)

如果你在执行时查看浏览器,看起来新窗口会有焦点,但对于webdriver,它不会.不要被视觉所欺骗.还要记住在关闭选项卡时选择一个新的窗口处理程序,因为它将设置driver.current_window_handle

selenium.common.exceptions.NoSuchWindowException: 
    Message: no such window: target window already closed from unknown error: web view not found
  (Session info: chrome=<Your version of chrome>)
  (Driver info: chromedriver=<Your chrome driver version> (<string of numbers>),platform=<Your OS>)
Run Code Online (Sandbox Code Playgroud)

.close(),如果你试图做的东西与在该阶段,驱动程序将抛出这个错误.