Kir*_*Kir 14 c# selenium webdriver
在单击事件之后,我需要等待元素属性更改,然后再继续(单击事件导致某些元素移出焦点,而其他元素通过JS获得焦点)
花了一些时间在webdriver中搜索"waitForAttribute"(selenium 1命令)的可靠替代品后,我可以得到以下代码.但我不确定这是否是最好的实施....
其他更好的解决方案?
wait = new WebDriverWait(wedriver1, TimeSpan.FromSeconds(5));
.....
button.Click();
wait.Until(webdriver1 => webdriver2.webelement.GetAttribute("style").Contains("display: block"));
Run Code Online (Sandbox Code Playgroud)
此外,任何人都可以分享一个链接,以了解如何使用webdriver处理AJAX事件更改.
我建议使用org.openqa.selenium.support.ui.ExpectedConditions.attributeToBe(WebElement element, String attribute, String value)
.
例如
WebDriverWait wait = new WebDriverWait(driver, 5); // time out after 5 seconds
someElement.click();
wait.until(ExpectedConditions.attributeToBe(someElement, "sort-attribute", "ascending"));
Run Code Online (Sandbox Code Playgroud)
(docs)
这是Selenium的反复出现的问题.我不确定现有的"最佳"实施方案.我相信这在很大程度上取决于具体情况.
关于AJAX驱动的更改,我通常会使用waitForElementPresent或waitForElementNotPresent,具体取决于AJAX调用将在页面上进行的更改.
您可以使用隐式WebDriver等待:
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
隐式等待是指在尝试查找一个或多个元素(如果它们不是立即可用)时,WebDriver轮询DOM一段时间.
更多信息:http://seleniumhq.org/docs/04_webdriver_advanced.html#implicit-waits
归档时间: |
|
查看次数: |
22810 次 |
最近记录: |