我如何在硒的帮助下单击此下拉菜单?

时间:2019-01-03 13:31:47

标签: java selenium junit cucumber gherkin

我对Wikipedia的下拉菜单有问题。当我插入一些字母时出现。我该怎么说黄瓜/硒点击“ Baum”。

enter image description here

我这样做是为了学习硒。

这是我的脚步。首先,我去德国维基百科:

@Given("^You want to search for \"Baum\" on \"([^\"]*)\"$")
public void youWantToSearchForOnWikipediaOrg(String page) throws Throwable
{
    System.setProperty("webdriver.chrome.driver",
            "C:\\...\\chromedriver_win32\\chromedriver.exe");
    driver = new ChromeDriver();
    driver.get("https://"+page+"/wiki/Wikipedia:Hauptseite");
}

然后我搜索“ Baum”一词:

@Then("^You tipp the letters \"([^\"]*)\", \"([^\"]*)\" and \"([^\"]*)\"$")
public void youTippTheLettersAnd(String letter1, String letter2, String letter3) throws Throwable
{
    Thread.sleep(5);
    driver.findElement(By.xpath("//input[@id='searchInput']")).sendKeys(letter1);
    driver.findElement(By.xpath("//input[@id='searchInput']")).sendKeys(letter2);
    driver.findElement(By.xpath("//input[@id='searchInput']")).sendKeys(letter3);
    Thread.sleep(25);
}

现在有一个下拉菜单,我要单击条目“ Baum”。

@Then("^Click on the appearing Baum$")
public void clickOnTheAppearing() throws Throwable
{
    //Thread.sleep(50);
    driver.findElement(By.xpath("//a/div")).click();
}

但是xpath找不到元素。我尝试使用不同的xpath和CSS,但无济于事...

示例:

  

// [@ classname ='mw-searchSuggest-linkinput'] // [text()='Baum']

     

/ html / body / div [6] / div / a 1 / div / span

     

/ html / body / div [6] / div / a 1 / div

     

body> div.suggestions> div> a:nth-​​child(1)> div> span

3 个答案:

答案 0 :(得分:1)

您需要为标签指定更多信息,说明要选择哪个值。因此,您需要使用类似:

   "2019-04-21T12:08:35"

答案 1 :(得分:0)

您还可以将xpath中的文本与关键字包含

一起使用
//*[contains(text(),'Baun')]

答案 2 :(得分:0)

您也可以尝试以下操作:

String text = "Baum"; /* text you want to select, may be you can parameterize this in your Gherkin step */
driver.findElement(By.xpath("//a[contains(@title,'" + text + "')]");

或者,您可以查找列出的所有建议结果,进行迭代,然后选择所需的结果:

List<WebElement> suggestionResults = driver.findElements(By.xpath("//a/div[@class='suggestions-result']");
for(WebElement result : suggestionResults){
    if(results.getText().equalsIgnoreCase(text) || result.getText().contains(text)){
       result.click();
       break;
    }
}

高级方法:如果要在搜索文本“ Baum”之后选择特定文本,则可以进行以下操作:

//a[.//span[text()='Baum'] and .//text()[contains(.,'Welch algorithm')]]

第一个条件是您的搜索文本匹配'Baum',第二个条件是您想要的文本选择'Welch algorithm'。再次将这2个输入作为小黄瓜步骤定义驱动的参数。