2

场景: 单击一个按钮,出现一个带有输入字段和取消/保存按钮的 jquery 模式对话框。当输入字段为空时,保存按钮被禁用,当将鼠标悬停在其上时,其工具提示会显示文本。

测试: 确保工具提示文本说出它应该说的内容。

使用: FF v26、ChromeDriver_win32_2.2 和 Chrome v31.*、Selenium-java-2.39.0、JQueryUI 和 JQuery.tipped.3.2.0。

问题(两个浏览器) NoSuchElementException:无法找到元素:{“method”:“id”:“selector”:“FileNumberRequiredText”}

Javascript

    <script type="text/javascript">     
            $(document).ready(function() {                                      
                $('#new_file_description').prop('maxlength','150');

                $("#new_file_number").bind("input keyup paste", toggleSaveButtonEnabled);

                function toggleSaveButtonEnabled() {
                    if ($("#new_file_number").val() == null || $.trim($("#new_file_number").val()) == '') {
                        var element = Tipped.findElement($("#button-save")[0]);
                        Tipped.create("#button-save", "<strong id='FileNumberRequiredText'><direct:message key='file.number.required'/></strong>", {
                          skin: 'custom',
                          hook: 'rightmiddle'
                        });
                    } else {
                        var element = Tipped.findElement($("#button-save")[0]);
                        Tipped.remove(element);
                    }
                }
            }
        </script>

这个测试代码我在类似的情况下工作,只是不在对话框中:

    Thread.sleep(5000L);

    try {   
        WebElement webElement = driver.findElement(By.cssSelector("#button-save"));
        Actions hover = new Actions(driver);
        hover.moveToElement(webElement).build().perform();

        WebElement hiddenDiv = driver.findElement(By.id("FileNumberRequiredText"));
        String script = "return document.getElementById('FileNumberRequiredText').innerHTML";
        String toolTipText = (String) ((JavascriptExecutor) driver).executeScript(script, hiddenDiv);
        System.out.println("Tool tip text is: " +toolTipText+"\n");
        assertTrue(toolTipText.matches("^[\\s\\S]*File Number is required and cannot be blank\\.[\\s\\S]*$"));
    } catch (Error e) {
        verificationErrors.append("Text does not match\n"+e.toString());
    }

使用 FireBug,我可以看到元素的 ID 存在。

    <div class="t_ContentContainer t_clearfix t_Content_custom">
        <strong id="FileNumberRequiredText">File Number is required and cannot be blank.</strong>
    </div>

我也尝试在悬停后暂停并使用 clickAndHold 无济于事。想法?

更新:我已经尝试了以下没有运气:

WebElement hiddenDiv = (new WebDriverWait(driver, 5)).until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("#FileNumberRequiredText")));

WebElement hiddenDiv = (new WebDriverWait(driver, 5)).until(ExpectedConditions.presenceOfElementLocated(By.id("FileNumberRequiredText")));
4

0 回答 0