【问题标题】:Autocomplete text-box first option selection自动完成文本框第一个选项选择
【发布时间】:2020-01-21 06:26:42
【问题描述】:

我想选择显示在自动完成文本框中的第一个选项。下面是我尝试但没有得到所需输出的代码。

代码:

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();
}

【问题讨论】:

    标签: java selenium xpath css-selectors webdriverwait


    【解决方案1】:

    要从文本框中选择第一个选项,您需要使用elementToBeClickable(),您可以使用以下Locator Strategies之一:

    • 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();
      

    【讨论】:

      【解决方案2】:

      如果你只想选择第一个选项,你可以在 selenium 中使用键类。请在下面找到相同的代码。

      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);}
      

      【讨论】:

        【解决方案3】:

        另一种方法:

        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"
        

        【讨论】:

          猜你喜欢
          • 2017-08-06
          • 2011-12-23
          • 2011-12-30
          • 2021-04-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-17
          • 1970-01-01
          相关资源
          最近更新 更多