Java 单击Selenium Webdriver中的链接不会';t正确关闭链接所连接的弹出窗口

Java 单击Selenium Webdriver中的链接不会';t正确关闭链接所连接的弹出窗口,java,macos,firefox,selenium,junit,Java,Macos,Firefox,Selenium,Junit,我正在努力单击selenium中通过java显示在模式对话框上的链接。我在网页上显示以下模式对话框: <div modal="" class="modal ng-scope visible" ng-init="mController='createPromptController'; mTemplate='states/global/modals/create-prompt/create-prompt.html'; mText='SELECT ONE';"><div class

我正在努力单击selenium中通过java显示在模式对话框上的链接。我在网页上显示以下模式对话框:

<div modal="" class="modal ng-scope visible" ng-init="mController='createPromptController'; mTemplate='states/global/modals/create-prompt/create-prompt.html'; mText='SELECT ONE';"><div class="modal-table">
    <div class="modal-table-cell">
        <div scope-element="innerModal" style="position:relative;">
            <div class="modal-button-close-line">
                <div ng-click="obj.close()" class="modal-button-close">
                  <i class="fa fa-close"></i>
                </div>
            </div>
        <div ng-controller="createPromptController" class="ng-scope"><div close-me-blur="blurObj" class="ng-isolate-scope">
            <div class="header">
                <h3 class="title ng-binding">SELECT ONE</h3>
            </div>
            <div class="content text-center">
                <p>Which create mode would you like to use?</p>
                <a class="tiny button medium-text" href="" ng-click="select('wizard')"><i class="fa fa-magic"></i>&nbsp;&nbsp;Wizard</a>
                <a id="ExperiencesCreateModeAdvanced" class="tiny button medium-text" href="" ng-click="select('advanced')"><i class="fa fa-cogs"></i>&nbsp;&nbsp;Advanced</a>
                <label>remember my selection&nbsp;&nbsp;
                <input type="checkbox" ng-model="rememberCreateChoice" class="ng-pristine ng-untouched ng-valid">
                </label>
                </div>
            </div>
        </div>
    </div>
</div>
我甚至看过点击一组坐标,但我还没有找到正确的方法。奇怪的是,有些click命令在selenium ide中工作得很好,比如单击这个高级按钮,但当我试图以编程方式执行时,什么都不起作用

据我所知,代码不在iframe中

我还尝试添加不同的延迟,以防出现时间问题,例如:

driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

在这种情况下,这似乎没有什么区别。我尝试过同时使用.click()和.sendKeys(Keys.RETURN),但实际上两者都不起作用。我已经翻阅了很多关于stackoverflow和google的文章,但没有取得任何进展。这个网站似乎使用了很多这样的模态对话框,所以我弄明白这一点至关重要。请告知。

在单击页面中的任何元素之前,请尝试切换到活动窗口

driver.switchTo().activeElement();

它无法找到web元素,因为您提供的文本与区分大小写或前导空格不匹配

因此,要通过链接文本查找这些元素:

driver.findElement(By.linkText("  Advanced")) 
driver.findElement(By.linkText("  Wizard"))
driver.findElement(By.partialLinkText("Advanced"))
driver.findElement(By.partialLinkText("Wizard"))
或通过部分链接文本:

driver.findElement(By.linkText("  Advanced")) 
driver.findElement(By.linkText("  Wizard"))
driver.findElement(By.partialLinkText("Advanced"))
driver.findElement(By.partialLinkText("Wizard"))

这并不理想,但这是我能做到的最接近的一次。我把这个贴在这里,以防将来有人遇到这个。使用selenium单击Advanced按钮会调用底层函数,但不会更改UI。因此,在高级页面加载到下面之后,我通过单击X按钮关闭弹出窗口来取消高级/向导对话框

    //Click Advanced
    //This is an ugly hack to click the advanced button but its the only way I can get selenium to work
    //Highlight advanced (which loads the create new experience page behind modal dialog, wait 5 seconds,
    //highlight the close button, wait 5 seconds, close modal dialog
    driver.findElement(By.cssSelector("i.fa.fa-cogs")).sendKeys(Keys.RETURN);
    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    driver.findElement(By.xpath("//div/i")).click();
    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    driver.findElement(By.linkText("  Advanced")).click();

这两个建议都不起作用。最常见的情况是“高级”按钮高亮显示,但从未单击过。因此,现在您可以找到它们了?很抱歉造成混淆。我总是能够找到它们,所以我重新定义了我的问题,以便更充分地解释我试图做的事情,即通过单击对话框来关闭对话框。这也没有帮助。无论我是否调用上面的线路,“高级”按钮都不会被单击。