我尝试过不同的方法,但无法取得任何成功。请帮我找到解决这个问题的方法。
我正在测试一个有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();
答案 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");