当前位置: 首页 > 面试题库 >

getWindowHandles()在Firefox 58中不起作用。焦点停留在父选项卡上,并且不会转移到下一个选项卡

施超
2023-03-14
问题内容

我开始学习如何使用带Java的Selenium在浏览器中处理多个选项卡。看起来我下面的代码无法正常工作。

    import java.util.ArrayList;
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.firefox.FirefoxDriver;

    public class HandlingWindows {

    public static void main(String[] args) throws InterruptedException
    {

        WebDriver driver= new FirefoxDriver();
        driver.get("https://www.facebook.com/");
        String parent= driver.getWindowHandle();
        System.out.println("Parent Window is"+parent);

        //Get Data Policy
        WebElement we= driver.findElement(By.linkText("Data Policy"));
        //Click Data Policy link
        we.click();
        //Create an arrayList
        ArrayList<String> s1= new ArrayList<String>(driver.getWindowHandles());


         for(String s2:s1)
           {


            if(!(s2.equalsIgnoreCase(parent)))
              {
               driver.switchTo().window(s2);
               Thread.sleep(5000);
               System.out.println(driver.getWindowHandle());
               System.out.println("get title of window"+driver.getTitle());
              }
             }
    }

}

请让我知道如何在不使用getWindowHandles()的情况下显示标题“数据策略”。


问题答案:

getWindowHandles()可以正常工作,但是在调用之前,getWindowHandles()您必须按照以下步骤诱使
WebDriverwait

System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
WebDriver driver= new FirefoxDriver();
driver.get("https://www.facebook.com/");
String parent= driver.getWindowHandle();
System.out.println("Parent Window is"+parent);
driver.findElement(By.linkText("Data Policy")).click();
WebDriverWait wait = new WebDriverWait(driver,5);
wait.until(ExpectedConditions.numberOfWindowsToBe(2));
Set<String> s1= driver.getWindowHandles();
for(String s2:s1)
{
    if(!parent.equalsIgnoreCase(s2))
        {
            driver.switchTo().window(s2);
            Thread.sleep(5000);
            System.out.println(driver.getWindowHandle());
            System.out.println("get title of window"+driver.getTitle());
        }
}

控制台输出:

Parent Window is4294967297
4294967303
get title of windowData Policy


 类似资料:
  • 问题内容: 我在selenium离子中停留了一点 场景是这样的 现在,从那时起,我们必须将重点转移到该新标签上,因为其余的测试将在该新标签上进行。 我写的代码如下 此代码无法正常工作,直到从下拉菜单中单击子菜单为止,并且日志中显示错误 因此,当我尝试运行该测试用例时,它会显示错误 [警告]链接具有目标’_blank’,Selenium不支持该目标! 随机目标为:selenium_blank8441

  • 我在docker上运行centos 8发行版,我希望使用package manager完成bash选项卡。根据其他帖子,我在docker容器启动后做了以下工作: 然后 这样做后,我重新启动容器,但仍然没有bash完成。我还试图通过以下方式直接获取bash完成文件: 但没有任何更好的效果。 你知道我做错了什么吗?

  • 我在Ubuntu12.10上运行NetBeans7.3。我正在学习一门Java Web开发课程,所以我有一个名为jsage8的项目,其中包含了我为该课程所做的工作。以前,这个项目在Projects选项卡中显示得很好,但现在打开这个项目什么也做不到。当我在打开项目菜单中单击打开它时,它只是说“没有项目打开”。然而,它将打开一个不是基于web的项目的普通Java项目文件夹。目前项目中只有一个index

  • 我有一个片段与片段寻呼机适配器实现表布局每个选项卡有一个回收器视图与一些项目(相同的回收器视图适配器为所有recylerview)通过实现OnItemClick侦听器点击每个项目调用一个活动,实现了一个视图寻呼机与片段StatePagerAdapter,以显示回收器视图项目基于滑动的表布局视图寻呼机显示上一个或下一个选项卡项目每个项目的数据存储在一个数组列表中。 一个片段和两个片段和…是相似的:

  • 问题内容: 我有一个非常简单的活动,有两个标签,并且我试图在自定义视图中处理键盘输入。这很好用…直到我交换标签。交换标签后,我再也无法捕获事件了。但是,在另一个应用程序中,打开一个对话框然后关闭它,将允许我的按键事件通过。如果不这样做,我将无法再次获取关键事件。 这里有什么问题?交换选项卡后,我找不到任何方法来获取关键事件,并且很好奇正在吃的东西。这个例子很简短,很关键。 码 main.xml m

  • 我们可以使用selenium ide将控件从一个选项卡转移到另一个选项卡吗