如何使用Selenium WebDriver选择一个组合框值,它是一个具有组合框作用的div

时间:2015-12-28 08:51:58

标签: java html selenium selenium-webdriver

我的HTML代码有一个div标签,其角色为组合框,即

<div role="combobox">...</div>

我正在尝试通过selenium驱动程序从java中选择组合框中的项目。

我尝试使用&#34;选择&#34;这里推荐的课程: How to select a dropdown value in Selenium WebDriver using Java

但由于它是一个div,我得到一个错误说

  

&#34; UnexpectedTagNameException:元素应该是select但是div是#34;

我认为这是因为div角色=&#34; combobox&#34;。

有什么方法可以解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

因为没有

select html tag
你的HTML代码中的

"Select" class will not work here.

所以你可以用两种方式做到这一点(因为你不给你详细的html代码)

第一个过程:

第一步:点击该组合框。

第二步:点击组合框后,将显示组合框选项及其链接文本或ID或其他定位器。

为此,请使用以下代码:

driver.findElement(By.id("search_key.combobox")).click();//click on that combo

大于

driver.findElement(By.linkText("ur combo option link text"));//click on ur desired combo option
or
driver.findElement(By.cssSelector("ur combo option's css path"));//u can use any other locator what is shown in ur html code after clicking on combo box

但点击组合框后,如果组合选项未显示在inspect部分中的任何定位器,则使用此代码:

driver.findElement(By.id("search_key.combobox")).click();//click on that combo
for(int i = 0; i <= position; i++){
    Actions actions = new Actions(driver);
    actions.sendKeys(Keys.DOWN).build().perform();//press down arrow key
    Actions actions = new Actions(driver);
    actions.sendKeys(Keys.ENTER).build().perform();//press enter
}

//here "position" is , ur desired combo box option position,
//for ex. u want to choose 3rd option,so ur "position" will be 3.

答案 1 :(得分:0)

您是否尝试使用Sendkeys()?

driver.findElement(By.xpath("//div[@role='combox']")).sendKeys("text to select exp: selenium");

如果上述内容无法按预期运行,您可以尝试点击下拉菜单,然后点击该下拉列表中的所需选项。

由于

答案 2 :(得分:0)

我能够通过首先点击div显示所有选项,然后点击所需选项来解决这个问题。

感谢大家的建议。