我们如何等待IWebElement被(重新)附加到DOM?我的情况是这样的,我从dropdown1中选择一个值,并且在dropdown2上单击数据绑定之后。因此,当我的测试像从Dd1中选择“ foo”,然后从Dd2中选择“ bar”时->我将得到一个例外,这是一个竞争条件,因为尚未渲染Dd2。
现在,我知道我们有了WebDriverWait类,我们可以使用直到方法smth如下:

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5));
wait.Until(By.Id("foo"));


但是我真的不希望将定位符字符串(“ foo”)引入我的测试逻辑中,因为这似乎已经超出了使用页面对象模型的目的。使用Page对象模型时,我已经拥有IWebElement实例

[FindsBy(How = How.Id, Using = "ctl00_MainContentPlaceHolder_actionButtonBarControl_btnSave")]
    public IWebElement BtnSave { get; set; }


因此,您知道暗中等待IWebElement准备进行通信的任何方法吗?

最佳答案

嗨,我有点晚了,但是我遇到了同样的问题,通过执行以下操作(使用您的代码)解决了这个问题:

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5));
wait.Until(By.Id(_pageModel.BtnSave.GetAttribute("id"));


然后,它仅返回ID属性的值,使您不必再用元素查找来污染测试代码。希望能帮助到你。

10-06 16:13