无法在selenium webdriver中的浏览器之间切换

时间:2012-11-09 08:23:59

标签: selenium-webdriver

Iam尝试在浏览器之间切换,即点击按钮就会启动新的浏览器 正在找到句柄..问题是它无法在id,xpath,name等搜索到的新浏览器中找到对象,可以有人给我任何建议。 它也能够匹配网址。

请同样为我提供解决方案。 下面是代码。

//上一个屏幕 设置windows = driver1.getWindowHandles();

driver1.findElement(By.id("findButton")).click();

//切换新屏幕的句柄

driver1.switchTo().window("Customer Search");
driver1.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 
int i = 1;
while(i<= 10){ 
    for (String handle : driver1.getWindowHandles()) {
       String myTitle = driver1.switchTo().window(handle).getTitle();
       System.out.println("myTitle value : " +myTitle);

//客户搜索是新窗口标题

       if(myTitle.equalsIgnoreCase("Customer Search")){
           driver1.manage().window().maximize();

//如果我传递的屏幕右侧网址也匹配,我已经给了虚拟(“sshsj”)

           if(driver1.getCurrentUrl().equalsIgnoreCase("sshsj"));
                   {
            System.out.println("Url is matching");

//但无法识别新窗口中的对象。

            driver1.findElement(By.xpath("html/body/left/form/table/tbody/tr[2]/td[1]/input")).sendKeys("kamal");
                   }

2 个答案:

答案 0 :(得分:0)

您可以使用JS打开一个新窗口,速度更快。

IJavaScriptExecutor jscript = driver as IJavaScriptExecutor;
jscript.ExecuteScript("window.open()");

然后切换窗口,使用窗口句柄:

List<string> handles = driver.WindowHandles.ToList<string>();
driver.SwitchTo().Window(handles.Last());
driver.get(url);
driver.findElement(By.xpath("html/body/left/form/table/tbody/tr[2]/td[1]/input")).sendKeys("kamal");

答案 1 :(得分:0)

元素可能存在于iframe中。在这种情况下,您需要切换到该iframe,然后才能访问iframe中的任何元素。