我希望能够在Selenium 2的新选项卡中打开链接。另外,我想在完成与页面的交互后关闭选项卡。如果我有标签的WebElement
,这怎么可能?Selenium 2:在新选项卡中打开链接并关闭标签
我使用硒2 Firefox的驱动程序的Java API中,在Firefox 4
我希望能够在Selenium 2的新选项卡中打开链接。另外,我想在完成与页面的交互后关闭选项卡。如果我有标签的WebElement
,这怎么可能?Selenium 2:在新选项卡中打开链接并关闭标签
我使用硒2 Firefox的驱动程序的Java API中,在Firefox 4
运行目前,硒的webdriver API没有处理选项卡的任何方式。该项目真的需要一个统一的,跨浏览器的管理选项卡的方法,然后才能在Java之类的语言绑定之一中看到实现。在此之前,您的JavaScript解决方案可能是唯一的方法,并且请记住,您的代码将负责管理该选项卡的生命周期。
我担心这会是答案。谢谢。 – Alp 2011-05-17 21:07:28
我想出硒2,Chrome和Firefox的做工精细的方式,IE浏览器有安全检查问题:
Set<String> winSet = webDriver.getWindowHandles();
List<String> winList = new ArrayList<String>(winSet);
String newTab = winList.get(winList.size() - 1);
webDriver.close(); // close the original tab
webDriver.switchTo().window(newTab); // switch to new tab
据我了解,这种方法只允许处理'windows',而不是'tabs' – Alp 2012-04-24 23:25:00
使用硒处于最佳状态,我们在溶胶 - 逻辑与java.awt中结合起来.robot类。您可以发送可以关闭浏览器窗口的密钥。尝试使用
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_W);
,如果它的工作原理
下面是它使用Python我怎么没回复。
该解决方案有点脏,但如果要关闭选项卡,则该解决方案可以工作。
我模仿mac快捷键CMD + W关闭一个标签,如果你正在运行windows,你可能需要实现一个不同的组合键。
import from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.amazon.com/gp/search/ref=sr_in_-2_p_lbr_brands_browse-_2895?rh=n%3A172282%2Cn%3A!493964%2Cn%3A502394%2Cp_lbr_brands_browse-bin%3ALytro")
action_chains = ActionChains(driver)
action_chains.key_down(Keys.COMMAND + "w")
action_chains.perform()
action_chains.key_up(Keys.COMMAND + "w")
driver.implicitly_wait(5)
我使用的是Robor类。
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_W);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_W);
这使机器人快速按下并释放CTRL + W键来模拟用户交互。如果您只使用keyPress事件,则会关闭WebDriver的所有选项卡和窗口。
希望我帮你。
花了一段时间(〜2周)让我追踪正确的命令序列,但这是迄今为止我发现的一种Win7/Chrome设置最简单的方法,可以在新选项卡AND开关中打开链接自动添加到新标签。
警告!确保始终执行keyUp操作。如果你无法执行keyUp,你的系统将会保持这些键被按下,直到重新启动或键盘输入发生。
的Windows 7 /铬:
WebElement elem = driver.findElement(By.linkText("MyLinkText"));
// Chrome key combos:
// SHIFT + CTRL + click = Open in new tab (and switch to new tab)
// SHIFT + CTRL + RETURN = Open in new tab (in background)
Actions act = new Actions(driver);
act.keyDown(Keys.LEFT_CONTROL).keyDown(Keys.LEFT_SHIFT).perform();
// Wrap in a try/catch during implementation to ensure you perform keyUp(s).
elem.click();
act.keyUp(Keys.LEFT_CONTROL).keyDown(Keys.LEFT_SHIFT).perform();
注:我知道这是一个古老的线程,我只是想在这里编目解决方案,因为我无法找到一个更好的解决方案,并希望拯救别人一一点时间(希望:)。
编辑:错字
谢谢,这是一个很好的方法 – Alp 2015-01-12 22:17:37
希望我能够专门帮助w/FF,但不幸的是我们使用Chrome作为我们的主要测试浏览器。然而,相同的通用技术应该适用于他人和他们各自的关键组合。 – TwoByteHero 2015-01-14 20:51:47
酷东西!谢谢! – 2016-10-05 02:14:04
我想到了一个使用JavaScript的解决方案。也许这是最简单的方法? – Alp 2011-05-17 16:25:26
你会分享这个解决方案吗?我有同样的问题。 – 2011-09-17 01:06:15
我没有找到解决方案。看起来没有办法做到这一点,另见公认的答案。 – Alp 2011-09-17 09:01:04