列表包含以"Comm"+一串所以"Comm";常见于下拉列表中的每个值前面。我想从列表中选择一个以"0"开头的随机字符串;Comm";我使用读取元素
var selectList = driver.FindElement(GroupDropdown_1); selectList.FindElement(By.XPath(string.Format("//option[starts-with(text(),'{0}')]", "Comm"))).Click();
但默认情况下,它总是在下拉列表中选择第一个出现的项。HTML代码是
<div id="RPaffgroups" name="RPaffgroups" style="display:inline;"><select name="groupid">
<option value="0">Comm Group: No Member Commission Group [ 52 mbrs]</option>
<option value="106">Aff Group: Retail - Affiliates 2018 [ 46 mbrs]</option>
<option value="106">Aff Group: Merchandise - Affiliates 2002 [ 433 mbrs]</option>
<option value="-1" selected="">Comm Group: Default Commission Group [ 52 mbrs]</option>
<option value="22" selected="">Comm Group: 0 Comm Group [ 52 mbrs]</option>
</select> <input type="checkbox" id="cbShowHiddenGroups" border="0" onclick="ToggleGroup('groupid',this);">Show hidden groups</div>
如上所述,它总是选取以"0"开头的字符串的第一次出现;Comm";在上述情况下是Comm Group:无成员委员会Group[52 mbrs]
FindElement()
之所以选择匹配xpath的第一个值,是因为它实现了FindElements()
(如果找到任何结果,则首先选择(。因此,这里的解决方法是按照xpath获取所有元素,然后随机选择。
selectList.FindElements(xpath).ToList().OrderBy(x => Guid.NewGuid()).First();