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