【发布时间】:2015-07-03 08:07:53
【问题描述】:
我在使用 C# 上的 Selenium WebDriver 填充下拉列表时遇到问题。
这是 HTML 代码:
<div class="chosen-container chosen-container-single chosen-container-single-nosearch" style="width: 278px;" title="" id="phmain_0_phcontent_4_ddlJobType_chosen">
<a tabindex="-1" class="chosen-single">
<span>Fabricator</span>
<div><b></b></div>
</a>
<div class="chosen-drop">
<div class="chosen-search">
<input type="text" autocomplete="off" readonly=""></div>
<ul class="chosen-results">
<li class="active-result" style="" data-option-array-index="1">Fabricator</li>
<li class="active-result" style="" data-option-array-index="2">Postformer</li>
<li class="active-result" style="" data-option-array-index="3">Retailer</li></ul>
</div>
</div>
SelectElement 不能使用,因为没有<select> 标签。
我尝试选择<li> 元素的XPATH,但没有运气:
var jobTypeInput = Driver.Instance.FindElement(By.XPath("/html/body/form/div[4]/div[2]/section/div[2]/div[1]/div[3]/fieldset[1]/div[4]/div/div/ul/li[1]"));
jobTypeInput.Click();
收到此错误:
无法定位元素: {"method":"xpath","selector":"/html/body/form/div[4]/div[2]/section/div[2]/div[1]/div[3]/fieldset[ 1]/div[4]/div/div/ul/li[1]"}
关于如何用它的 3 个值之一填充下拉列表的任何想法?
【问题讨论】:
-
您使用的是什么驱动程序? PhantomJS?
-
这个函数看起来像是使用javascript来运行的。你不能选择 li。您可能只需将所选 li 的文本复制到输入。
-
选择器非常脆弱,看起来像是复制粘贴的。这是第一个问题。
-
@SILENT 我正在使用 Selenium WebDriver。你能解释一下“只需复制一个选定的li的文本输入”吗?谢谢
标签: c# html selenium xpath drop-down-menu