对于基于多个Webview的移动应用程序(使用Cordova,PhoneGap,XCode构建的iOS应用程序),我创建了以下方法来检查是否存在元素。请提示以下片段是否有意义?因为基于传统显式等待的传统包装器功能无法可靠运行。
public boolean waitForElemToBeAvailable(final By by, final int timeout, int retries) {
WebDriverWait wait = new WebDriverWait(appiumDriver, timeout);
boolean success = false;
final long waitSlice = timeout/retries;
if(retries>0){
List<WebElement> elements = appiumDriver.findElements(by);
if(elements.size()>0){
success = true;
return success;
}else {
appiumDriver.manage().timeouts().implicitlyWait(waitSlice, TimeUnit.SECONDS);
retries--;
}
}
return success;
}
谢谢
按照您共享的代码块,我看不到任何附加值来检查 是否 通过
出现了elementimplicitlyWait
。该实现看起来像是纯开销。相反,如果你看看 Java文档
的ExpectedCondition接口从
org.openqa.selenium.support.ui
包,其中模型预期可能,以评估的东西,不为空也不假还包含一个条件ExpectedConditions类,可以调用WebDriverWait类和
方法 在一个循环中 __提供更详细的方法来确认是否已达到特定条件。 这为我们提供了更多选择 WebElement
所需行为的灵活性。一些广泛使用的方法是:
元素的存在:
presenceOfElementLocated(By locator)
元素的可见性:
visibilityOfElementLocated(By locator)
元素的交互性:
elementToBeClickable(By locator)
注意
:根据文档,请勿混合使用隐式和显式等待。这样做可能导致无法预测的等待时间。
下面是我为firefox浏览器初始化的selenium web驱动程序。 尽管我给出了隐式等待,但我没有等待元素。它会立即抛出not found异常。如果我放那么它工作正常,没有任何问题。但是把现在测试用例包含更多线程的任何地方。sleep比实际的测试用例代码低。有人能给我建议正确的方法吗?
2)使用了显式wait(WaitForelementPresent/WaitForVisible/ElementTobeClickable/wait for invisibility of element等)(所有可能的尝试) 3)使用Java脚本(window.angular.element('body').injector().get('$http').PendingRequests.Leng
如果我的问题听起来很重要,我事先道歉,我在质量保证和硒方面是新手。 我正在使用Java和Selenium编写测试,有时我需要等待web元素被访问,下面是我以前使用的代码片段: 但现在我在某处看到: 第二个当然短得多,但我不知道它是否更好,换句话说,它们是否不同?如果是,如何?哪一个更好?
所以我们有一页医学专科。它原本只是英文的。因此,如果您搜索“neuro”,则HTML看起来类似于 然后他们添加了西班牙语,所以并不是所有的结果都会返回,但是只有西班牙语是可见的。一个新的 > 添加在底部。 是否有方法等待任何匹配xpath的元素可见?注意,visibilityOfAllElements()将不起作用,因为它们不会全部可见。 我想可以做的是,预先计算所有带有@id和“width”的元
我有一个动态加载的页面,其中包含一个按钮。我正在尝试等待selenium使用C#绑定点击按钮。我有以下代码: 不过这不管用。click事件永远不会被触发。selenium脚本不会抛出异常警告ID为“addInspectionButton”的元素不存在。它只是不能点击它。如果我加一根线。Sleep(3000)在wait语句和我获得按钮元素句柄的那一行之间。 我没有使用预期条件.元素在这里正确点击吗?
问题内容: 我正在寻找类似于在单击元素之前检查元素是否已显示的内容。我认为可以通过完成此操作,因此我使用了以下方法: 然后点击 不幸的是,有时它等待元素,有时不等待。我寻找了一段时间,找到了这个解决方案: 它等待一切正常,但是在超时之前必须等待10次5、50秒。有点多。因此,我将隐式等待时间设置为1秒,直到现在一切都还不错。因为现在有些事情在超时前等待10秒,而另一些事情在1秒之后超时。 如何覆盖