Выбор первой опции текстового поля автозаполнения - PullRequest
1 голос
/ 21 января 2020

Я хочу выбрать первый вариант, отображаемый в текстовом поле автозаполнения. Ниже приведен код, который я пробовал, но не получил требуемый вывод.

Код:

public void clickSublink() throws IOException, InterruptedException {   
    System.setProperty("webdriver.chrome.driver","F:\\Amitha\\chromedriver.exe");
    WebDriver dr=new ChromeDriver();
    dr.get("http://demoqa.com/autocomplete/");
    dr.findElement(By.xpath("//input[@id='tags']")).sendKeys("b");
    dr.findElement(By.xpath("//ul[@id='ui-id-1']//child::li")).click();
}

Ответы [ 3 ]

1 голос
/ 21 января 2020

Чтобы выбрать первый вариант из текстового поля , вам нужно использовать elementToBeClickable(), и вы можете использовать любой из следующих Стратегий локатора :

  • cssSelector:

    driver.get("http://demoqa.com/autocomplete/");
    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.ui-autocomplete-input#tags"))).sendKeys("b");
    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("ul.ui-autocomplete>li>div"))).click();
    
  • xpath:

    driver.get("http://demoqa.com/autocomplete/");
    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='ui-autocomplete-input' and @id='tags']"))).sendKeys("b");
    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//ul[@class='ui-menu ui-widget ui-widget-content ui-autocomplete ui-front']/li/div"))).click();
    
0 голосов
/ 21 января 2020

Другой подход:

library (XML)
library(RCurl)
data=htmlParse("http://demoqa.com/autocomplete/")
result=xpathSApply(data,"normalize-space(substring-before(substring-after(//div[@class='demo-frame']//script[last()]/text(),'['),']'))")
reg=gsub('\"',"",result)
final=unlist(strsplit(reg,", "))

Производит:

[1] "ActionScript" "AppleScript"  "Asp"          "BASIC"        "C"            "C++"         
[7] "Clojure"      "COBOL"        "ColdFusion"   "Erlang"       "Fortran"      "Groovy"      
[13] "Haskell"      "Java"         "JavaScript"   "Lisp"         "Perl"         "PHP"         
[19] "Python"       "Ruby"         "Scala"        "Scheme"
0 голосов
/ 21 января 2020

Если вы хотите выбрать только первый вариант, вы можете использовать класс ключей в селене. Пожалуйста, найдите ниже код для того же.

public void clickSublink() throws IOException, InterruptedException {   
System.setProperty("webdriver.chrome.driver","F:\\Amitha\\chromedriver.exe");
WebDriver dr=new ChromeDriver();
dr.get("http://demoqa.com/autocomplete/");
dr.findElement(By.xpath("//input[@id='tags']")).sendKeys("b");
dr.findElement(By.xpath("//input[@id='tags']")).sendKeys(Keys.DOWN, Keys.ENTER);}
...