【发布时间】:2021-01-16 21:11:34
【问题描述】:
我有一个输入和一个类似的数据列表
<input type="text" id="theinput" list="thedatalist">
<datalist id="thedatalist">
<option value="one"></option>
<option value="two"></option>
<option value="three"></option>
</datalist>
现在,我想使用 selenium 在数据列表中选择一个项目。
首先,我向输入发送一个键
var remoteWebDriver = (RemoteWebDriver) browser;
var input = remoteWebDriver.FindElementsByCssSelector("#theinput");
input.SendKeys("o");
然后我尝试将数据列表视为<select> 元素,例如
var datalist = remoteWebDriver.FindElementsByCssSelector("#thedatalist");
var select = new SelectElement(datalist);
我收到了UnexpectedTagNameException 的消息
元素应该已经被选中,但是是数据列表
在我有机会select.SelectByText("one");之前。
如何使用 selenium 与数据列表交互?
此外,当浏览器失去焦点时,下拉菜单似乎会关闭。这是预期的行为吗?
【问题讨论】:
-
你可以只使用 xpath //datalist[id='thedatalist']/option[value()='one'] 。然后使用 .click() 就可以了。
-
我不会在选择器中使用值,我也不喜欢 xpath,但我会尝试类似你的建议。
-
个人喜好。您也可以在 CSS 选择器中执行类似 String.Format("/option[value()='{0}']",anyvalue ) 的操作,以根据不同的值类型进行查找。String.Format("/option[' {0}']",number ) 来查找索引。
-
你能在这里分享 url 以便我可以给 xpath
-
谢谢你,但我会使用 css @JustinLambert
标签: c# html selenium selenium-chromedriver html-datalist