2017-12-27 20 views
1

私は、テキストボックスがフィールドをオートコンプリートするインテリジェンスを提供するテストケースを自動化しようとしています。 http://demoqa.com/autocomplete/オートコンプリートテキストボックスを自動化する方法

このコードが見つけ、ブラウザが提供するインテリジェンスのオプションを見つけることができない私

dr.findElement(By.id("tagss")).sendKeys("a"); 
    Thread.sleep(300); 
// dr.findElement(By.id("ui-id-53")).click(); 
    Actions act = new Actions(dr); 
    act.moveToElement(dr.findElement(By.id("ui-id-53"))).click().build().perform(); 

によって書かれたコードを見つけてください: オートコンプリートテキストボックスの下のリンクをご覧ください。助けてください。

答えて

2

ページの再読み込み後にこれらのオプションのHTML IDが変更されるため、DOMで自動候補のオプション要素を見つけることができません。

この場合、XPathを使用して要素を識別する必要があります。

System.setProperty("webdriver.chrome.driver","C:\\WebDriver\\TestAutomation\\grid\\chromedriver.exe"); 
WebDriver driver = new ChromeDriver(); 
driver.get("http://demoqa.com/autocomplete/"); 
driver.manage().window().maximize(); 
driver.findElement(By.id("tagss")).sendKeys("a"); 
WebDriverWait wait = new WebDriverWait(driver,10); 
wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.id("ui-id-1")))); 
WebElement javaOption = driver.findElement(By.xpath(".//li[@class='ui-menu-item' and text()='Java']")); 
javaOption.click(); 

そのない良い練習がThread.sleep();

希望このヘルプあなたを使用する - あなたは、あなたのコードがあるべき、のJava自動推奨オプションをクリックするとします。

+0

おかげでその作業 –

+0

私が試したが、私の評判は11であり、それは私の評判はそうするのに十分ではないと言います。そのamolに申し訳ありません –

0

実行時に変更される可能性のある動的IDを使用しているためです。 このコードを試してみて、私は任意のクエリのために知っている - あなたの助けを

public class AutoSuggest { 

    public static void main(String[] args) throws InterruptedException { 
      try { 

        System.setProperty("webdriver.chrome.driver", "C:\\Users\\Ranosys\\workspace\\MyTest\\chromedriver.exe"); 
        WebDriver driver = new ChromeDriver(); 
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
        WebDriverWait wait=new WebDriverWait(driver,50); 

        driver.manage().window().maximize(); 

        driver.get("http://demoqa.com/autocomplete/"); 
        driver.findElement(By.id("tagss")).sendKeys("a"); 
        Actions act = new Actions(driver); 
        List<WebElement> lst= driver.findElements(By.xpath("//li[contains(@id,'ui-id')]")); 
        for(WebElement element:lst){ 
         element.click(); 
         break; 
        } 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
    } 


} 
+0

あなたの助けをありがとう。その働き。私は少しコードを変更しました。 'リストオプション= dr.findElements(By.className(" ui-menu-item ")); (WebElement X:オプション)のため \t \t \t(。。x.getText()toLowerCaseメソッド()に等しい( "ジャワ")) \t {\t \t場合 \t \t { \t \t \t x.click( ); \t \t} \t} –

関連する問題