2015-09-06 69 views
0

切换到标签我使用下面的代码来测试窗口的句柄。“SWITCHTO”法不工作在浏览器

新页面在新标签中打开,但switchTo命令不切换到它。

public static void main(String[] args) { 
     Actions act = new Actions(driver); 
     driver.get("https://www.google.co.in"); 

     String parentWin = driver.getWindowHandle(); 
     act.keyDown(Keys.LEFT_CONTROL).perform(); 
     driver.findElement(By.linkText("Images")).click(); 

     for(String newWindow: driver.getWindowHandles()){ 
      driver.switchTo().window(newWindow); 
      driver.findElement(By.id("lst-ib")).sendKeys("hello world"); 
      driver.findElement(By.name("btnG")).click(); 
      driver.close(); 
     } 


     driver.switchTo().window(parentWin); 
     driver.findElement(By.linkText("Gmail")).click(); 


    } 

这个代码在这里评选为正确答案:How to handle the new window in Selenium WebDriver using Java?从@CODEBLACK

+0

阅读问题标题。然后阅读详细说明/方案,如果您认为某些缺失将其放在评论框中。 https://open.bufferapp.com/how-to-read-more-and-remember-it-all/ – paul

回答

1

我是如何工作的理解是,每个驱动程序实例是一个浏览器,而不是一个标签。但是......当我查阅如何做到这一点时,我看到代码示例说明你的代码应该工作。所以我不确定它是否曾经工作过,现在不是,或者他们在说标签,但意味着新的浏览器窗口......无论哪种方式,我找到了一个解决方案。有两种方法可以做到这一点。

  1. 在新浏览器窗口而不是选项卡中打开新页面。这是一个简单的解决方法...您只需将您的CTRL按键更改为SHIFT即可。

    act.keyDown(Keys.SHIFT).perform();

  2. 另一种方式,我没有尝试过,但它在下面的链接描述。它基本上涉及使用CTRL + TAB键盘快捷键移动打开的选项卡。你将不得不跟踪你的位置,并根据打开的标签数量,这可能变得非常快速。

http://design-interviews.blogspot.com/2014/11/switching-between-tabs-in-same-browser-window.html

我会推荐#1,因为它感觉少哈克,但你可能有它在一个选项卡中打开一个要求,必须去与#2。

+0

我想downvote,因为我已经知道它“周围的其他方式。”我特别想知道为什么'switchTo'不工作。 – paul

+0

我解释说,在我的答案中......它工作的很好,你只是希望它在不打算被使用的情况下工作。如果你知道另一种选择,那么你应该把答案放在节省时间研究替代品的答案上。 – JeffC

+0

他是对的。目前Selenium不支持在选项卡之间切换(请注意,不支持并不意味着您无法解决问题) – Ardesco

相关问题