无法从Selenium Webdriver中的下拉列表中选择隐藏元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法从Selenium Webdriver中的下拉列表中选择隐藏元素相关的知识,希望对你有一定的参考价值。

html代码:

<select class="select2 ddl visible select2-hidden-accessible" data-allow-clear="true" id="Step1Model_CampaignAdditionalDataTypeId" multiple="" name="Step1Model.CampaignAdditionalDataTypeId" tabindex="-1" aria-hidden="true">
<option value="1">Optus AC Number</option>
<option value="2">Date Of Birth</option>
<option value="3">Pass Phrase</option>
<option value="4">Transaction Id</option>
</select>
<span class="select2 select2-container select2-container--default select2-container--above" dir="ltr" style="width: 121.047px;">
<span class="selection">
<span class="select2-selection select2-selection--multiple" role="combobox" aria-haspopup="true" aria-expanded="false" tabindex="-1">
<ul class="select2-selection__rendered">
<li class="select2-search select2-search--inline">
<input class="select2-search__field" type="search" tabindex="0" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="textbox" aria-autocomplete="list" placeholder="" style="width: 0.75em;"></li>
</ul>
</span></span>
<span class="dropdown-wrapper" aria-hidden="true">
</span></span>

我在Selenium Webdriver(使用java)中使用以下代码(POM)来选择:

public static By campAddDataType= By.id("Step1Model_CampaignAdditionalDataTypeId");
waitTime = new WebDriverWait(driver,20);
waitTime.until(ExpectedConditions.visibilityOf(driver.findElement(CommonOR.campAddDataType)));
String js = "arguments[0].hidden='false'"; 

((javascriptExecutor) driver).executeScript(js,(driver.findElement(CommonOR.campAddDataType)));

CampAdd = new Select(driver.findElement(CommonOR.campAddDataType));
CampAdd.selectByVisibleText("Date Of Birth");

当用户将一个选项标记为true时,将显示此下拉列表。所以我相信这就是为什么 - > aria-hidden =“true”并且为了使这个选项变为假,我运行了java脚本执行器,但仍然无法从下拉列表中选择所需的元素。

请提出一些解决方案。

答案

你试过以下吗?

listItem = driver.findElement(By.xpath("//select[@id='Step1Model_CampaignAdditionalDataTypeId']/option[.='Date Of Birth']"))
((JavascriptExecutor) driver).executeScript("arguments[0].click();",listItem);

以上是关于无法从Selenium Webdriver中的下拉列表中选择隐藏元素的主要内容,如果未能解决你的问题,请参考以下文章

如何选择下拉菜单中的所有选项 - Selenium Webdriver?

如何使用 Selenium Webdriver 和 Python 从这个非选择下拉菜单中选择这个元素

如何使用 Selenium WebDriver C# 从下拉列表中选择一个选项?

如何使用 Selenium WebDriver C# 从下拉列表中选择一个选项?

在 Selenium Webdriver 如何处理这种包含复选框的多选下拉列表

如何使用 Java 计算 Selenium WebDriver 中选择下拉框中的选项数量?