我們如何等待IWebElement被重新連接到DOM?我的情況是這樣的,我從dropdown1中選擇一個值,然後在dropdown2上單擊數據綁定。所以當我的測試像從Dd1中選擇「foo」那樣,然後從Dd2中選擇「bar」 - >我會得到一個異常,因爲Dd2還沒有被渲染,所以有一個競爭條件。 現在,我知道,我們有WebDriverWait類,我們可以使用方法之前水木清華這樣的:Selenium,等待元素,頁面對象模型,c#綁定
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5));
wait.Until(By.Id("foo"));
但我真的不希望把定位符字符串(「富」),以我的測試邏輯,因爲它似乎正在破壞使用頁面對象模型的觀點。當使用Page對象模型我已經有IWebElement實例
[FindsBy(How = How.Id, Using = "ctl00_MainContentPlaceHolder_actionButtonBarControl_btnSave")]
public IWebElement BtnSave { get; set; }
所以,你知道的任何方式來暗示等待IWebElement要準備好溝通?
左右,但仍然在尋找良好的解決方案 –
內部靜態無效WaitForElementToBeReadyAndSelectByText( IWebElement webElement,字符串s) { 爲(VAR I = 0; I <10;我++){ 嘗試 { 變種 元素=新SelectElement(webElement); element.SelectByText(s); 突破; } catch(StaleElementReferenceException) { Thread.Sleep(200); } } } –
您是否找到一個好的解決方案呢?我正在爲完全相同的事情而苦苦掙扎。 – Dymond