您好,我是通过VBA接触硒的新手,我试图选择下拉列表,并且需要从下拉列表中选择一个复选框。不幸的是,我无法共享链接。
我有一些代码,但是它不起作用,下面是我尝试过的代码
bot.FindElementByXPath("//*[contains(text(),'GT - ALL')]").Click
这是网络元素
<div class="form-group">
<label for="billerId"> Mid </label><br>
<select name="billerId" id="billerId" class="billerId form-control" multiple="multiple" style="display: none;">
<option value="7">(7) Pay</option>
<option value="11">(11)</option>
<option value="GT1">(1) GT - ALL</option>
<option value="GT7">(7) GT - S1- LB</option>
<option value="GT8">(8) GT - S2 - LB</option>
<option value="GT9">(9) GT - S3</option>
<option value="GT6">(6) GT Whistle</option>
<option value="GT4">(4) GT -LB</option>
<option value="1">(1) Main - PP (2)</option>
<option value="4">(4) MTEST</option>
<option value="2">(2) test</option>
<option value="12">(12) RR1</option>
<option value="10">(10) RR Data</option>
<option value="8">(8) RR 2Mid</option>
<option value="9">(9) RR 3</option>
<option value="6">(6) Silver New PP </option>
<option value="5">(5) SILVER </option>
<option value="3">(3) Strike</option>
</select>
<div class="ms-parent billerId form-control"><button type="button" class="ms-choice"><span class="placeholder">All</span><div class=""></div></button>
<div class="ms-drop bottom" style="display: none;">
<div class="ms-search"><input type="text" autocomplete="off" autocorrect="off" autocapitilize="off" spellcheck="false"></div>
<ul style="max-height: 250px;">
<li class="ms-select-all"><label><input type="checkbox" data-name="selectAllbillerId">[Select All]</label></li>
<li class="" style="false"><label class=""><input type="checkbox" data-name="selectItembillerId" value="7"><span>(7) </span></label></li>
<li class="" style="false"><label class=""><input type="checkbox" data-name="selectItembillerId" value="11"><span>(11) </span></label></li>
<li class="" style="false"><label class=""><input type="checkbox" data-name="selectItembillerId" value="GT1"><span>(1) GT - ALL</span></label></li>
<li class="" style="false"><label class=""><input type="checkbox" data-name="selectItembillerId" value="GT7"><span>(7) GT - LB</span></label></li>
<li class="" style="false"><label class=""><input type="checkbox" data-name="selectItembillerId" value="GT8"><span>(8) GT - S2 - 02/11/17 LB</span></label></li>
<li class="" style="false"><label class=""><input type="checkbox" data-name="selectItembillerId" value="GT9"><span>(9) GT - S3</span></label></li>
<li class="" style="false"><label class=""><input type="checkbox" data-name="selectItembillerId" value="GT6"><span>(6) GT Whistle</span></label></li>
<li class="" style="false"><label class=""><input type="checkbox" data-name="selectItembillerId" value="GT4"><span>(4) GT -LB</span></label></li>
<li class="" style="false"><label class=""><input type="checkbox" data-name="selectItembillerId" value="1"><span>(1) Main - PP (2)</span></label></li>
<li class="" style="false"><label class=""><input type="checkbox" data-name="selectItembillerId" value="4"><span>(4) MTEST</span></label></li>
<li class="" style="false"><label class=""><input type="checkbox" data-name="selectItembillerId" value="2"><span>(2) test</span></label></li>
<li class="" style="false"><label class=""><input type="checkbox" data-name="selectItembillerId" value="12"><span>(12) RR1</span></label></li>
<li class="" style="false"><label class=""><input type="checkbox" data-name="selectItembillerId" value="10"><span>(10) RR Data</span></label></li>
<li class="" style="false"><label class=""><input type="checkbox" data-name="selectItembillerId" value="8"><span>(8) RR 2Mid</span></label></li>
<li class="" style="false"><label class=""><input type="checkbox" data-name="selectItembillerId" value="9"><span>(9) RR 3</span></label></li>
<li class="" style="false"><label class=""><input type="checkbox" data-name="selectItembillerId" value="6"><span>(6) Silver New PP </span></label></li>
<li class="" style="false"><label class=""><input type="checkbox" data-name="selectItembillerId" value="5"><span>(5) SILVER </span></label></li>
<li class="" style="false"><label class=""><input type="checkbox" data-name="selectItembillerId" value="3"><span>(3) Strike</span></label></li>
<li class="ms-no-results" style="display: none;">No matches found</li>
</ul>
</div>
答案 0 :(得分:2)
使用*标识要定位的选择器时,该xpath似乎有两个元素。由于此操作返回一个以上的元素,因此它在列表中,因此您无法调用click。
为了使单击生效,您只需获取要单击的元素。不确定哪个是按钮,但是这些是两者的显式xpath:
//option[contains(text(), 'GT - ALL')]
或
//span[contains(text(), 'GT - ALL')]
答案 1 :(得分:1)
您可以使用比xpath更快的attribute = value css选择器。请注意,文本值似乎是:(1) GT - ALL
您的下拉列表和复选框是不同的。
输入复选框元素(由type
属性表示,值为checkbox
,它是input
标签元素的一部分)
对于复选框,您可以使用
bot.findElementByCss("input[type=checkbox][value='GT1']").click
您可以将其缩短为:
bot.findElementByCss("input[value='GT1']").click
下拉(由父select
标签和子option
标签元素指示):
有一个非复选框,您可以使用以下复选框:
bot.findElementByCss("option[value='GT1']").click
或
bot.findElementByCss("option[value='GT1']").Selected = True
如果需要,可以将GT1切换为其他值。