1

我正在尝试在浏览器之间切换,即单击按钮时它会启动一个新浏览器它正在查找句柄..问题是它无法在使用 id、xpath、名称等搜索的新浏览器中找到对象。给我任何建议。它也可以匹配 url。

请给我同样的解决方案。下面是代码。

//上一屏 Set 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();

//如果我传递了与此处也匹配的屏幕的正确 url,我给出了 dummy("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");
                   }
4

2 回答 2

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");
于 2013-04-05T10:42:17.730 回答
0

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

于 2014-11-27T16:13:53.000 回答