我正在尝试使用selenium在java上创建一个脚本,它将完成所有注册步骤并创建新用户。我找不到下拉元素。selenium根本看不到dropdown元素。
web应用程序在java+angular上这是我的html:
<p-dropdown _ngcontent-c9="" appendto="body" class="Main-dropdown ng-tns-c11-7 ng-pristine ng-invalid ng-touched"
name="regionActual" required="">
<div class="ng-tns-c11-7 ui-dropdown ui-widget ui-state-default ui-corner-all ui-helper-clearfix">
<div class="ui-helper-hidden-accessible ng-tns-c11-7 ng-star-inserted">
<select class="ng-tns-c11-7" aria-hidden="true" tabindex="-1" name="regionActual" aria-label=" ">
<option class="ng-tns-c11-7 ng-star-inserted" value="FirstRegion">FirstRegion</option>
<option class="ng-tns-c11-7 ng-star-inserted" value="SecondRegion">SecondRegion</option>
</select>
</div>
<div class="ui-helper-hidden-accessible">
<input class="ng-tns-c11-7" readonly="" role="listbox" type="text" aria-label=" ">
</div>
<label class="ng-tns-c11-7 ui-dropdown-label ui-inputtext ui-corner-all ui-placeholder ui-dropdown-label-empty ng-star-inserted">empty</label>
<div class="ui-dropdown-trigger ui-state-default ui-corner-right">
<span class="ui-dropdown-trigger-icon ui-clickable pi pi-caret-down"></span>
</div>
</div>
我试了下:
//p-dropdown[@name='regionActual']//label
//p-dropdown[@name='regionActual']//select
//p-dropdown[@name='regionActual']/div
//p-dropdown[@name='regionActual']//div[@class='ui-dropdown-trigger ui-state-default ui-corner-right']
什么都不管用。selenium可以单击选项,但不能单击select。如果我点击“选择”元素手动脚本进入下一步成功。
谢谢你的评论和帮助。我已经找到了解决我问题的办法。我打开chromedev工具,点击选择元素并观察发生了什么。两个元素同时突出显示:p-dropdown和first div。要点击“select”,我必须依次点击这两个元素。这是我必须点击的元素顺序:
//p-dropdown[@name='regionActual']
//p-dropdown[@name='regionActual']/div
//div[@class='ui-dropdown-items-wrapper']/ul/li[2]
这对我来说并不明显,但确实有效。再次感谢!
1条答案
按热度按时间w8rqjzmb1#
因为这个下拉列表是用标记构建的,所以您可以直接使用select类。
示例代码: