2017-08-22 59 views
1

如何在Chrome上打开新选项卡。我需要从中获取一些数据,返回到我的上一个选项卡并输入数据。我知道如何迭代选项卡,但我无法打开新的选项卡。如何使用操作类在Chrome中打开新选项卡

硒版本:3.5.2
Chrome版本:我使用的是Action class,只使用它来模拟最终用户的鼠标操作60

package Amazon; 

import java.util.concurrent.TimeUnit; 

import org.openqa.selenium.By; 
import org.openqa.selenium.Keys; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.interactions.Actions; 

public class VerifyAmazonSignInPage { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     System.setProperty("webdriver.chrome.driver", "C://Selenium jars/chromedriver.exe"); 

     WebDriver driver = new ChromeDriver(); 
     driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 
     driver.get("http://www.amazon.in"); 
     driver.findElement(By.xpath("//span[text()='Hello. Sign in']")).click(); 
     driver.findElement(By.id("ap_email")).sendKeys("[email protected]"); 
     driver.findElement(By.id("ap_password")).sendKeys("*****"); 
     driver.findElement(By.id("signInSubmit")).click(); 
     Actions act = new Actions(driver); 
     act.keyDown(Keys.CONTROL).sendKeys("t").keyUp(Keys.CONTROL).build().perform(); 
     driver.get("http://www.gmail.com"); 


    } 

} 
+0

[如何使用Selenium WebDriver与Java打开新选项卡?](https://stackoverflow.com/questions/17547473/how-to-open-a-new-tab-using-selenium-webdriver -with-java) – Madhan

+0

这是针对不同版本的硒和不同的浏览器。 –

+0

为什么你必须使用'Action'类? – Amol

回答

0

动作类是一个硒类,它只能用于自动化基于web的应用程序。打开新选项卡是在网页浏览器上执行的操作,该浏览器是独立应用程序。它可以通过使用java.awt包中的Robot类完成。

1

经验法则。请勿将其用于其他目的。

在你的情况下,你需要发送密钥到浏览器,你可以使用任何WebDriver接口实现。那么你想如何打开一个新标签?

最简单的方法是发送键body元素上打开新的标签页 -

driver.findElement(By.tagName("body")).sendKeys(Keys.CONTROL + "t"); 

但在某些场景中,这不工作,所以我更喜欢JavascriptExecutor,我已经在它写post因为它是平台不可知的解决方案。

((JavascriptExecutor) driver).executeScript("window.open('http://gmail.com/','_blank');"); 

注意,在打开新标签后,你必须照顾switching tab,它不会自动工作。

+0

谢谢@ 4M01我想知道是否可以使用操作类来完成,但无论如何这也有帮助。 –

+0

@GauravThantry'Action'类应该也可以工作,但大部分时间都失败了。这是我迄今观察到的。 'SendKeys'不是一个很好的练习来打开一个新标签页,它要求浏览器处于活动状态,并将焦点放在浏览器上。但是Javascript无论如何工作 – Amol

相关问题