当前位置: 首页 > 知识库问答 >
问题:

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

骆文彬
2023-03-14

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

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

我试图通过selenium驱动程序和java从组合框中选择一个项目。

我尝试使用"选择"类推荐在这里:如何选择一个下拉值在Selenium WebDriver使用Java

但既然是div,我就错了

msgstr"未预料到的TagNameException:元素应该被选择,但被div"

我认为这是因为div role=“combobox”。

有没有办法解决这个问题?

共有3个答案

颜云瀚
2023-03-14

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

谢谢大家的建议。

应嘉容
2023-03-14

您是否尝试过Sendkeys()?

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

如果上述操作无法按预期工作,您可以尝试使用“单击”下拉列表,然后单击该下拉列表中的“必需”选项。

谢谢

白子明
2023-03-14

因为没有

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

但是点击组合框后,如果检查部分没有显示任何定位器的组合选项,请使用以下代码:

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.
 类似资料:
  • 我的用户控件上有两个组合框。我的目标是,当第一个被选中(里面有一个项目)时,第二个应该处于活动状态。以下是代码片段: 当第一个是项目选择时,如何激活第二个组合框?

  • 所以,我有一个奇怪的问题,我从组合框列表中选择一个项目,为了填充第二个组合框,我必须首先从第一个组合框中再次选择单词,而不是从项目列表中,而是单词本身。只有这样,代码才会注册我选择了该项目。我拥有的代码是简单的$variable.SelectedItem。参见下面的代码; 我想做的就是从下拉列表中选择位置“医院”,然后第二个名为“$ComboBox_Printer”的组合框填充我服务器中的打印机名

  • 我在一个表单中有两个组合框。 当combobox 2中的列表更新时,我希望combobox 1中选定的值发生变化。 例如:ComboBox1 包含移动公司的名称,ComboBox2 包含该公司所有移动电话的列表。

  • 我的情况是,我有一个comb-Box,通过javascript动态地填充整数值。 问题是当我点击项目选择它时,它仍然没有被选中,点击该项目后,我需要再次点击组合框外才能选中它。我不知道为什么? 我这样做的代码是(它是内表): 我如何填充组合中的项目是这样的: 我以前在wpf或任何其他应用程序中所做的是,我只是在combobox中单击要选择的项目,它就被选中了,但为什么我需要在项目上单击一次,然后在

  • 我正在尝试使用两个ttk组合框从sqlite数据库中获取数据。我设法使用combo_division()函数在一个名为的组合框中列出项目。现在我试图对第二个名为产品菜单的组合框做类似的事情,但是列表需要根据组合框中的第一个选定项目缩小范围。 为了让SQL查询传递第二个组合框所需的信息,我想到了这样的东西: 到目前为止两个组合框的代码:

  • 我有一个列表类型的组合框。我通过datacontext绑定了ItemsSource和ItemSelected。如果所选项目已经更改,我会显示一条弹出消息,确认用户的操作。单击“确定”后,选择会发生变化。但是在点击“取消”时,选择应该被取消,而先前的项目应该被保留。下面是绑定到combobox的SelectedItem的属性。 组合框在弹出窗口中。那么Dispatcher对象在这种情况下能工作吗?