1

Selenium 2.25、Firefox、OSX ML。

Ajax に影響を与えるボタンを Selenium にクリックさせます。

次に、結果を操作したいと思います。以下のスリープがないと、クリックターゲットをスクロールして表示できないため、クリックが失敗するというエラーが表示されます。理解できません。どうしたの?

    WebElement sampleComboInput = driver.findElement(By.id("sampleCombo-inputEl"));
    sampleComboInput.click();
    sampleComboInput.sendKeys("English-03.txt");
    sampleComboInput.sendKeys(Keys.TAB, Keys.TAB);
    WebElement goButton = driver.findElement(By.id("inputDialogGoButton-btnInnerEl"));
    goButton.click();

    WebElement resultsSpan = driver.findElement(By.cssSelector("span.ne-type-node.PERSON"));
    assertTrue(resultsSpan.isDisplayed());
    assertEquals("PERSON (3)", resultsSpan.getText());
    WebElement parent = resultsSpan.findElement(By.xpath(".."));
    Thread.sleep(5000); // without sleep, get error unable to scroll
    Actions action = new Actions(driver);
    action.doubleClick(parent);
    action.perform();
4

2 に答える 2

0

要素がロードされるのを待つ必要があります。代わりに、waitForVisible を試しましたか? また、スリープを使用すると、待機時間が長くなる可能性のある他のマシンでコードが機能しなくなる可能性があります。

于 2012-08-18T23:47:53.753 に答える
-1

Thread.Sleep は動作に一貫性がないため、使用を避けるようにしてください。スペース レンジャーは、要素が読み込まれるまで待機する必要があることは正しいです。

c# 版には「WebDriverWait」クラスと「Until」メソッドがあります。これら 2 つを使用して、要素が読み込まれるのを待つことができます。

この投稿に対する Loudenvier の回答を見てください: Selenium c# Webdriver: Wait until Element is Present

これは私が好む方法です。使いやすく、簡単に再利用でき、Thread.Sleep に関連する問題を回避します。

于 2012-10-19T19:51:17.450 に答える