【问题标题】:Pop up box - how to handle it in selenium弹出框 - 如何在 selenium 中处理它
【发布时间】:2015-11-14 04:26:34
【问题描述】:

我已经尝试点击确认注销按钮很久了,但我无法让它工作!我有一个测试应该让您退出并在退出后立即返回主页,但我似乎无法单击该按钮。当我尝试使用

切换到弹出框时
driver.switchTo().frame(0);

它运行并且没有给我任何错误...但是我无法让它找到确认注销!

【问题讨论】:

    标签: java xpath selenium-webdriver automation css-selectors


    【解决方案1】:

    我遇到了同样的问题,并通过使用 XPATH 搜索框架解决了它。也许这个 sn-p 可以帮助你:

    wd = your WebDriver; 
    searchFrame= wd.findElement(By.xpath("whatever"));
    wd.switchTo().frame(searchFrame);
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("button2")));
    wd.findElement(By.className("button2")).click();
    

    【讨论】:

    • By.className,那是什么?
    • By用于定义搜索元素的类型。
    • 是的,我对 By 很熟悉,但我不明白 .className 在寻找什么..
    • 你用谷歌搜索过“C# selenium By.className”吗?你或许可以在那里找到答案。
    • @JeffC C#?它被标记为 java。
    【解决方案2】:

    您尚未提供 iframe 的 HTML 代码,但是,鉴于我们所拥有的,我们可以找到包含提供的注销按钮的 iframe:

    WebElement frame = driver.findElement("//iframe[.//a[contains(@id, 'confirmLogoutDialog')]]");
    driver.switchTo.frame(frame);
    

    然后,您可以通过链接文本找到您的按钮并单击它:

    driver.findElement(By.linkText("Sign Out")).click();
    

    您可能还需要等待它变为可点击:

    WebDriverWait wait = WebDriverWait(driver, 10);
    WebElement logout = wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Sign Out")));
    logout.click();
    

    【讨论】:

    • 我现在没有这样的框架:元素不是框架错误
    • @Tree55Topz 好的,已修复。
    • 我现在收到一个过时的元素引用错误。这个愚蠢的弹出框有什么问题!!!并感谢您的帮助!
    • @Tree55Topz 在这里需要更多信息:提供页面的完整 HTML,包括弹出框和它的 iframe。此外,您到目前为止拥有的代码以及您当前遇到的错误的回溯。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2011-11-13
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多