如何通过Selenium WebDriver从显示在“输入”标签而不是“选择”标签内的列表中选择一个选项

时间:2018-08-03 15:07:32

标签: selenium selenium-webdriver xpath css-selectors webdriver

我要使用Selenium Webdriver和Java,从显示在“输入”标签而不是“选择”标签内的列表中选择一个选项。

请找到以下详细信息-

GUI如下- Please find the GUI image here

<td nowrap="" valign="middle" colspan="3" rowspan="1">
<div class="mceGridField siebui-value mceField">
<input type="text" name="s_6_2_158_0" value="" aria-labelledby="BGC_Type_Label" aria-label="Type" style="height: 24px; width:80px;" class="siebui-ctrl-select siebui-input-popup siebui-align-left siebui-input-align-left ui-autocomplete-input" aria-describedby=" s_6_2_158_0_icon" maxlength="30" tabindex="0" role="combobox" autocomplete="off" data-seq="0" aria-readonly="false">
<span class="siebui-icon-dropdown applet-form-combo applet-list-combo" id="s_6_2_158_0_icon" data-allowdblclick="true"></span></div>
</td>

GUI的选项列表如下- Please find the GUI image of option list after clicking

我正在使用以下代码从列表中选择一个选项-

driver.findElement(By.xpath("//*[@id='s_6_2_158_0_icon']")).click();

但是我仍然无法选择任何选项。 你能帮忙吗?

2 个答案:

答案 0 :(得分:0)

您是否尝试过sendKeys方法btw-

driver.findElement(By.xpath("//*[@id='s_6_2_158_0_icon']")).sendKeys("Fix");

最好使用id-

driver.findElement(By.name("s_6_2_158_0_icon")).sendKeys("Fix");

答案 1 :(得分:0)

要在列表中的所需选项上调用click(),您需要诱使 WebDriverWait 使所需的元素可点击,您可以使用以下解决方案:

  • cssSelector

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input[name^='s_'][aria-labelledby='BGC_Type_Label'][aria-label='Type']"))).click();
    
  • xpath

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[starts-with(@name,'s_')][@aria-labelledby='BGC_Type_Label' and @aria-label='Type']"))).click();