【发布时间】:2015-02-07 07:15:40
【问题描述】:
希望有人可以帮助解决这个问题...
在与级联下拉菜单交互时,我不断收到上述错误消息(见标题)。 我成功使用的唯一基本修复是“Thread.Sleep”...请参阅下面的代码摘录:
注意我传递了以下参数:
属性:ID
attrval:例如ID123456(下拉列表的ID)
参数:汽车(我们要选择的下拉值)
IWebElement element = findMyElement(attribute, attrval);
SelectElement selectElement = new SelectElement(element);
selectElement.SelectByText(parameter);
// dirty code - needs to be re-written
Thread.Sleep(500);
if (new SelectElement(findMyElement(attribute, attrval)).SelectedOption.Text.Equals(parameter))
{
return "pass";
}
注意2:findMyElement是一个自定义方法(这里是摘录):
public static IWebElement findMyElement(string attribute, string attrval)
{
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
switch (attribute.ToLower())
{
case "id":
wait.Until(ExpectedConditions.ElementExists(By.Id(attrval)));
wait.Until(ExpectedConditions.ElementIsVisible(By.Id(attrval)));
return driver.FindElement(By.Id(attrval));
正如我在代码 cmets 中所述,无论如何我都可以避免使用 Thread.Sleep,因为我知道这不是推荐的方法。
提前致谢:)
【问题讨论】:
-
哪一行抛出异常?选择下拉列表时,您的应用程序会发生什么?页面是否发生了变化?添加了哪些新元素?是否发送了任何新请求?
-
这里抛出异常(没有thread.sleep) if (new SelectElement(findMyElement(attribute, attrval)).SelectedOption.Text.Equals(parameter))
-
关于页面本身,因为它是一个级联下拉菜单,下拉菜单中的可选选项将更新,例如如果我在第一个下拉菜单中选择汽车,第二个会询问颜色。在后台中注意页面在选择第一个下拉列表中的值 span>时,页面返回
-
如果可能的话,您能否提供您的 html,并且在执行此操作之前您是否使用不同的操作来回导航?
-
在前端 aspx 上,当第一个下拉值被选中时,会进行以下调用: OnDropDownSelectedIndexChanged="..._DropDownSelectedIndexChanged" 这又会定位第二个下拉列表并重新绑定数据
标签: c# selenium selenium-webdriver