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)
其他一切,玩得开心!
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()
将在新打开的选项卡中执行.
打开新窗口的另一种方法是使用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()
,如果你试图做的东西与在该阶段,驱动程序将抛出这个错误.
归档时间: |
|
查看次数: |
20842 次 |
最近记录: |