我需要使用Selenium打开新选项卡中的链接。
那么,可以对Selenium中的元素执行ctrl+click以在新选项卡中打开它吗?
发布于 2015-01-05 11:38:03
使用ActionChain和key_down按下控制键,并使用key_up发布它:
import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get('http://google.com')
element = driver.find_element_by_link_text('About')
ActionChains(driver) \
.key_down(Keys.CONTROL) \
.click(element) \
.key_up(Keys.CONTROL) \
.perform()
time.sleep(10) # Pause to allow you to inspect the browser.
driver.quit()发布于 2015-01-05 10:22:55
有两种可能的解决办法:
打开一个新的选项卡
self.driver = webdriver.Firefox()
self.driver.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 't') 这是MAC OSX的解决方案。在其他情况下,您可以使用标准的Keys.CONTROL + 't‘
打开了一个新的webdriver
driver = webdriver.Firefox() #1st window
second_driver = webdriver.Firefox() #2nd windows 发布于 2015-01-05 09:53:38
下面是我尝试使用Java实现Selenium WebDriver的方法,以及它对我的作用。如果您想手动打开新标签中的链接,可以通过执行上下文单击链接并选择'Open in New Tab‘选项来实现这一点。下面是使用Java绑定的Selenium web驱动程序的实现。
Actions newTab= new Actions(driver);
WebElement link = driver.findElement(By.xpath("//xpath of the element"));
//Open the link in new window
newTab.contextClick(link).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform();Web驱动程序以与新窗口相同的方式处理新选项卡。您必须通过窗口名切换到新打开的选项卡。
driver.switchTo().window(windowName);您可以跟踪窗口名称,这将帮助您轻松导航之间的标签。
https://stackoverflow.com/questions/27775759
复制相似问题