无法使用java中的testNG Selenium 3.3.1从具有隐藏属性的所选下拉列表中选择任何元素

时间:2017-03-15 11:03:41

标签: java selenium-webdriver

我尝试过不同的方法,但无法取得任何成功。请帮我找到解决这个问题的方法。

我正在测试一个有this页面的应用程序。 请参阅此页面并帮助我从上面的下拉列表中选择值。

BTW在以下行的帮助下,我可以点击下拉列表,但无法使用不同的技术选择任何值。

WebElement source = driver.findElement(By.cssSelector("#step_language > div.well.well-lg > div > div:nth-child(2) > div > div.mars_chosen_container.clearfix"));
source.click();

3 个答案:

答案 0 :(得分:0)

试试这个代码段

    WebElement TargetLanguage =  driver.findElement(By.cssSelector("#targetLanguageId_chosen>ul>li>input"));
    TargetLanguage.click();

    Thread.sleep(3000);

    // Gets the target languages in the List
    List<WebElement> LangElements = driver.findElements(By.cssSelector("#targetLanguageId_chosen>.chosen-drop>ul>li"));
    for(WebElement t : LangElements)
    {
        if(t.getText().equalsIgnoreCase("Arabic"))
        {
            t.click();
        }

    }

这里作为一个例子,我点击了阿拉伯语。您可以使用所需语言替换它并使用它。

希望它适合你。如果出现任何问题,请随时提出。

答案 1 :(得分:0)

试试这种方式。

driver.get("https://www.marstranslation.com/place-order");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.findElement(By.xpath("//a/span[contains(text(), 'English')]")).click();          //Click on dropdown using xpath locator.
WebDriverWait wait = new WebDriverWait(driver, 15);    //Use explicit wait method for find an element
wait.until(ExpectedConditions.elementToBeClickable(driver.findElement(By.xpath("//ul/li[contains(text(), 'Arabic')]"))));
driver.findElement(By.xpath("//ul/li[contains(text(), 'Arabic')]")).click();      //After explicit wait, click on Arabic option from dropdown using xpath locator.

答案 2 :(得分:0)

我更喜欢为这样的事情编写函数,因为它们可能会被重用。

public static void SelectSourceLanguage(String language)
{
    driver.findElement(By.cssSelector("a.chosen-single")).click(); // click the dropdown
    driver.findElement(By.xpath("//ul[@class='chosen-results']/li[contains(.,'" + language + "')]")).click(); // click the language
}

然后您可以将其称为

driver.get("https://www.marstranslation.com/place-order");
SelectSourceLanguage("Hindi");