2013-07-19 16 views
5

次のコードは、Webページのautocomleteボックスをテスト(?なぜ自動化された入力は、オートコンプリートのオプションをロードしませんが、手動入力はありません):Seleniumを使ってオートコンプリート入力ボックスを埋める方法は?

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しかし、何も動作しません。

+0

他のブラウザを試しましたか?また、なぜWebドライバ待機で0秒間待っていますか? – Madusudanan

+0

ありがとうございます。 1)明示的待機に問題はないので、私は '(driver、120)'を使うことができます。ページが正常に読み込まれます。この問題は、 "Associated Press、The"が入力ボックスに入ったときに発生します...手動で問題はありませんが、自動的にそこに行くので、単純にオプションがロードされません。 2)私もFireFoxを試しました。改善はありませんでした。 – Buras

+0

タイトルは非常に有望でしたが、私は、sendKeys()が、同じテキスト入力が手動で入力されたときと同じように、オートコンプリートドロップダウンリストを表示しないという事実に、なぜ、問題のある要素を調べることができる本当のURLを与えていないのですか? –

答えて

1

私はあなたのコードを試しました、それはまさにマニュアルウォークスルーがするものです。 "Associated Press、The"は "No Match、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(); 
} 
1

これについての回避方法が見つかりました。私の問題は:

  • フィールドが次にセレンが開いて自動提案ドロップダウンを左
  • マッチしたオプションと一緒に表示され、自動示唆自動示唆ロケーションフィールドに「マンダルヨン」が入力
    1. セレン一致したオプションを選択しません。私が何をしたか

    た:

     driver.findElement(By.name("fromLocation")).sendKeys("Mandaluyong"); 
         driver.findElement(By.name("fromLocation")).sendKeys(Keys.TAB); 
    

    私はTABキーを押ししようとすると、手動テストに、二つのことがシステムによって行われたためです:ピック

    1. 自動提案のドロップダウンから一致したオプションを選択します
    2. 自動候補のドロップダウンを閉じます

    これが役立つことを願っています。

  • 0

    //オートプルプリケーションの値をテキストボックスに入力できるようにします。

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

    // clear auto filled value driver.findElement(By.name( "txtBox"))。clear();

    driver.findElement(By.name( "txtBox"))。sendKeys( "value");

    0

    最初に[入力]テキストボックスをクリックしてください。 これにより、自動入力のドロップダウンボックスが表示され、sendKeysを使用して必要な値を入力します。

    +0

    これを行う方法の例を教えてください。 – Adam

    +0

    driver.findElement(By.name( "fromLocation"))。クリック();ドライバ.findElement(By.name( "fromLocation"))。sendKeys( "XYZABC");ドライバ.findElement(By.name( "fromLocation"))。sendKeys(Keys.TAB); –

    関連する問題