5

次のコードは、Web ページのオートコンプリート ボックスをテストします。

public class Test {

    public static void main(String[] args) throws InterruptedException {
        System.setProperty("webdriver.chrome.driver","chromedriver\\chromedriver.exe");     
        WebDriver driver = new ChromeDriver();
        driver.get("http://www..............com"); 
        driver.switchTo().frame("mainFrame");

        WebDriverWait waitst = new WebDriverWait(driver, 120);
        waitst.until(ExpectedConditions.visibilityOfElementLocated(By.name("sourceTitle")));

        WebElement sourceTitle = driver.findElement(By.name("sourceTitle"));
        WebElement small = driver.findElement(By.cssSelector("li#nameExampleSection label + small"));
        sourceTitle.sendKeys("Times"); 
        Thread.sleep(5000);
        Actions actions = new Actions(driver);
        actions.click(small).perform();

    }

}

自動提案ボックスがロードされないのはなぜですか? 重要: ".........."を手動で入力してみてください... オートコンプリート ボックスは問題なく読み込まれます!!! では、なぜcssSelectorオートコンプリート ボックスが読み込まれないのでしょうか。

自動入力ではオートコンプリート オプションが許可されないのに、手動入力では許可されるのはなぜですか?

PS: も試しましfireEventsendKeysが、何も機能しません。

4

5 に答える 5

1

私はあなたのコードを試しましたが、手動のウォークスルーとまったく同じです。"Associated Press, The" は "No Match, please try sources" のみを返します。コードでは、結果のポップアップではなく、次のフォーム リスト項目をクリックしようとします。autosuggest ポップアップは、入力フォームの下に配置された HTML ページの上部に動的に入力されます。次のコードは、ドロップダウンの最初のオプションを選択します。

@Test
public void test() throws InterruptedException {
        WebDriver driver = new ChromeDriver();
        driver.get("http://www.lexisnexis.com/hottopics/lnacademic/?verb=sf&sfi=AC00NBGenSrch"); 
        driver.switchTo().frame("mainFrame");

        WebDriverWait waitst = new WebDriverWait(driver, 0);
        waitst.until(ExpectedConditions.visibilityOfElementLocated(By.name("sourceTitle")));

        WebElement sourceTitle = driver.findElement(By.name("sourceTitle"));
        sourceTitle.sendKeys("Times"); 
        Thread.sleep(5000);
        WebElement firstItem = driver.findElement(By.xpath("//*[@class='auto_suggest']/*[@class='title_item']"));
        firstItem.click();
}
于 2013-07-19T09:32:08.000 に答える
0

タブまたはエンターを使用してシナリオをエスケープできます。または、必須フィールドの場合、セレンでは不可能です。(悲しい)

于 2020-08-30T09:14:05.870 に答える
0

// autopuplation 値をテキスト ボックスに入力できるようにします。

// 6 秒間待機し、自動値が挿入されていることを確認します thread.sleep(6000L);

// 自動入力された値をクリアする driver.findElement(By.name("txtBox")).clear();

driver.findElement(By.name("txtBox")).sendKeys("値");

于 2014-10-30T10:47:14.610 に答える