Java 如何使用SeleniumWebDriver选择combobox值,其中它是一个具有combobox角色的div

Java 如何使用SeleniumWebDriver选择combobox值,其中它是一个具有combobox角色的div,java,html,selenium,selenium-webdriver,Java,Html,Selenium,Selenium Webdriver,我的HTML代码有一个div标记,其角色为combobox,即 <div role="combobox">...</div> 我试图通过使用java的selenium驱动程序从组合框中选择一个项目 我尝试使用此处推荐的Select类: 但是因为它是一个div,所以我说这个是错误的 UnexpectedTagNameException:元素应已选择,但为div 我认为这是因为div role=combobox 有没有办法解决此问题?您是否尝试使用Sendkeys dri

我的HTML代码有一个div标记,其角色为combobox,即

<div role="combobox">...</div>
我试图通过使用java的selenium驱动程序从组合框中选择一个项目

我尝试使用此处推荐的Select类:

但是因为它是一个div,所以我说这个是错误的

UnexpectedTagNameException:元素应已选择,但为div

我认为这是因为div role=combobox


有没有办法解决此问题?

您是否尝试使用Sendkeys

driver.findElement(By.xpath("//div[@role='combox']")).sendKeys("text to select exp: selenium");
如果上述操作不能按预期工作,您可以尝试使用“单击”下拉列表,然后单击该下拉列表中的“必需”选项

谢谢

因为没有

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.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.

但单击组合框后,如果组合选项未在“检查”部分中显示任何定位器,则使用以下代码:

driver.findElement(By.id("search_key.combobox")).click();//click on that combo
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.

我可以通过首先单击显示所有选项的div,然后单击所需的选项来解决这个问题


谢谢大家的建议。

只有使用Select html标记构建下拉列表时,才能使用Select类,否则需要使用其他方法来处理下拉列表。可以给我你的HTML片段和你尝试过的代码吗?HTML是:我尝试过的代码是:Select dropdown=new Selectdriver.findElementBy.idsearch\u key.combobox;请为combobox发布html。html是:我尝试的代码是:Select dropdown=new Selectdriver.findElementBy.idsearch\u key.combobox;我也尝试过SendKeys,但没有成功。@ParagMahajan,它看起来像普通的div,因为在提供的html中没有选项。所以请尝试像点击那个div一样,然后选项将显示在下拉列表中,然后再次使用clickonrequired选项。