我正在Selify中创建一个单元测试,它修改了一系列下拉菜单,以测试它们的选项是否正确加载并按预期工作.
目前,测试使用FindElements和XPath获取所有下拉菜单,并使用Foreach循环 Select 和修改每个下拉菜单.
当它运行时,第一个下拉菜单被更改,它继续逐个 Select 其余的菜单,但它永远不会更改选项.
我try 添加显式和隐式等待,以查看它是否进行得太快并跳过它们.这并没有解决这个问题,所以我添加了一个thread.sleep()来try 跟踪它所做的事情.每个菜单都被正确点击,但除第一个菜单外,其他任何菜单的选项都不会更改.
C #
public bool editMessages(IWebDriver driver, String option)
{
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement selectOption;
foreach (var selectBox in driver.FindElements(By.XPath("(//div[@class = 'col-4']//select)")))
{
selectBox.Click();
selectOption = selectBox.FindElement(By.XPath($"//option[text() = '{option}']"));
Thread.Sleep(1000);
selectOption.Click();
}
return false;
}
超文本标记语言
<div class="col-4" ng-show="editMessagesMode" aria-hidden="false" style="">
<span>
<select class="selectbox ng-pristine ng-valid ng-not-empty ng-valid-required ng- touched" name="messageSelect" ng-model="message.status" required="" ng-change="updateSelectedMessageValues(message.message_id, value)" style="height: 35px; width: 100%; float: left; margin-top: -11px; padding: 1px; color: rgb(0, 85, 165);" ng-options="c.value as ('MESSAGE_TYPE_' + c.value) | translate for c in selectMessages" aria-invalid="false">
<option disabled="" translate="SELECT" value="" class="">Select</option>
<option label="In-Active" value="number:0">In-Active</option>
<option label="Cups-On" value="number:1" selected="selected">Cups-On</option>
<option label="Cups-Off" value="number:2">Cups-Off</option>
<option label="Both" value="number:3">Both</option>
</select>
</span>
</div>
目前共有5个相同的下拉列表,但这个数字会波动.