我的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;。
有什么方法可以解决这个问题吗?
答案 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显示所有选项,然后点击所需选项来解决这个问题。
感谢大家的建议。