首页 > 解决方案 > 使用 Selenium 选择没有 ID 的下拉值

问题描述

得到下面的HTMLcode下拉:

<select name="PWCMasterPage$PWCWebPartManager$gwpTemplateFr1$TemplateFr1$drpProductType" id="PWCMasterPage_PWCWebPartManager_gwpTemplateFr1_TemplateFr1_drpProductType" tabindex="2" class="PWCDropDownList" profiledatamember="" profileid="TEMPLATE" onblur="this.Holder = GetControlHolder(this);" onchange="this.Holder = GetControlHolder(this);" onfocus="this.Holder = GetControlHolder(this);" data-val-subtype-type="none" controlscollectionname="TemplateFr1_drpProductType" data-configid="TemplateFr1_drpProductType" holdername="TemplateFr1Holder">
<option value=""></option>
<option value="7">Expedited</option>
<option value="8">Premier</option>
<option value="9">Value</option>
</select>

一直在尝试选择下拉值:

Select dropDown = new Select(driver.findElement(By.xpath("//*[@id=\"PWCMasterPage_PWCWebPartManager_gwpTemplateFr1_TemplateFr1_drpProductType\"]")));
dropDown.selectByValue("8");

出现以下错误:

线程“主”org.openqa.selenium.NoSuchElementException 中的异常:找不到具有值的选项:8

Select dropDown = new Select(driver.findElement(By.xpath("//*[@id=\"PWCMasterPage_PWCWebPartManager_gwpTemplateFr1_TemplateFr1_drpProductType\"]")));
dropDown.selectByVisibleText("Expedited");

导致以下错误:

线程“主”org.openqa.selenium.NoSuchElementException 中的异常:无法找到带有文本的元素:加急

也曾尝试与 selectByVisibleText 和 selectByIndex 交替使用,这导致了类似的错误。

标签: javaselenium

解决方案


你在使用野生动物园吗?

如果是这样,则 webdriver 和 safari 存在已知问题。它的长短是使用苹果提供的驱动程序。

这是硒问题:https ://github.com/SeleniumHQ/selenium/issues/3145

如果您查看: https ://webkit.org/blog/6900/webdriver-support-in-safari-10/

他们说:

“Safari 的驱动程序可通过/usr/bin/safaridriver 可执行文件启动,Selenium 提供的大多数客户端库将自动以这种方式启动驱动程序,无需进一步配置。”


推荐阅读