我尝试了 this 这件事情,当我选择了代码名称,但是当我在代码名称Select select = new Select();
中使用div
时,它可以正常工作,它无法正常工作,并提示我出现以下错误: org.openqa.selenium.support.ui.UnexpectedTagNameException: Element should have been "select" but was "div"
。
<div stop-propagation="click" class="custom-select-search">
<input class="undefined ng-pristine ng-valid ng-touched" type="text" autocomplete="off" ng-model="searchTerm">
</div>
<ul role="menu">
<li role="presentation" class="ng-scope">
<a role="menuitem" tabindex="-1" href=""ng-click="select(s)" class="ng-binding">166</a>
</li>
<li role="presentation" class="ng-scope">
<a role="menuitem" tabindex="-1" href=""ng-click="select(s)" class="ng-binding">164</a>
</li>
<li role="presentation" class="ng-scope">
<a role="menuitem" tabindex="-1" href=""ng-click="select(s)" class="ng-binding">165</a>
</li>
<li role="presentation" class="ng-scope">
<a role="menuitem" tabindex="-1" href=""ng-click="select(s)" class="ng-binding">166</a>
</li>
</ul>
这是我的代码:
WebElement elements = driver.findElement(serial);
Select ComboBoxValues = new Select(elements);
List <WebElement> weblist = ComboBoxValues.getOptions();
int iCnt = weblist.size();
Random num = new Random();
int iSelect = num.nextInt(iCnt);
ComboBoxValues.selectByIndex(iSelect);
System.out.println("Element Name 1 : " +elements.getAttribute("value"));
任何人都可以告诉我这样做。
答案 0 :(得分:0)
根据selenium 选择文档,
***打开声明org.openqa.selenium.support.ui.Select
为SELECT标记建模,提供帮助方法来选择和取消选择选项。
表示SELECT可用于仅使用选择标记的下拉列表。您的应用程序下拉列表使用DIV标记。这就是您的代码无法在您的网页上运行的原因
答案 1 :(得分:0)
看起来该网站有一些模拟下拉列表的自定义用户界面。这意味着您必须实现自己的代码才能与之交互。我建议创建一个类,让我们称之为MySiteSelector,它将有一个select()方法,它知道在哪里点击打开菜单列表(它看起来不像这里) ,然后将搜索您的列表项(css选择器将是&#34; ul [role =&#39; menu] li&#34;)以找到与您所需目标匹配的项目。