使用 Appium 和 Ruby 测试 iOS 应用程序时等待元素加载?

Posted

技术标签:

【中文标题】使用 Appium 和 Ruby 测试 iOS 应用程序时等待元素加载?【英文标题】:Wait for element to load when testing an iOS app using Appium and Ruby? 【发布时间】:2013-07-17 20:45:41 【问题描述】:

我正在测试一个 ios 应用,登录后无法与元素交互,因为 Appium 运行速度太快。

有人可以指出一个使用 WebDriverWait 样式等待 Appium iOS 测试的示例吗?最好在 Ruby 中。

谢谢。

【问题讨论】:

在 ruby​​ 或 js 中寻找完全相同的东西。 我也在寻找同样的东西。对于 androidbrowser.driver.manage.timeouts.page_load = 30 之类的东西似乎可以工作。在 iOS 上会弹出一个错误提示 Appium 尚未实现... 【参考方案1】:

这对我有用,但我是 Appium 的新手

#code that navigated to this page
wait = Selenium::WebDriver::Wait.new :timeout => 10
wait.until  @driver.find_element(:name, 'myElementName').displayed? 
#code that deals with myElementName

【讨论】:

对我来说效果很好。谢谢!! 如果您确定元素将在 10 秒内加载,这是一个很好的示例。否则(例如名称更改,或时间不够),它会抛出异常 Selenium::WebDriver::Error::NoSuchElementError: No element found 并且你应该以某种方式拯救它。 sleep(10) 与此类似。这有什么不同? @Mrityunjeyan S - waittimeout => 10 将延迟执行最多 10 秒,但如果预期条件变为真(在这种情况下,一旦显示元素)将停止延迟。然而,sleep(10) 无论如何都会延迟执行正好 10 秒。【参考方案2】:

我使用这个构造来等待一些元素出现:

wait_true  exists  find_element(:xpath, path_to_element)  

当然,你不仅可以通过:xpath找到。

你也可以设置超时时间:

wait_true(timeout)  exists  find_element(:xpath, path_to_element)  

【讨论】:

【参考方案3】:

这是我想出的一个,但在 java 中。有点冗长,但它会引导您了解它应该如何等待。它将花费几秒钟的等待时间,然后每秒检查一次元素是否存在。一旦它找到了元素,它就会确保它是可见的,因此可以与之交互。 “驱动程序”显然是 WebDriver 对象。

public void waitForVisible(final By by, int waitTime) 
    wait = new WebDriverWait(driver, timeoutInSeconds);
    for (int attempt = 0; attempt < waitTime; attempt++) 
        try 
            driver.findElement(by);
            break;
         catch (Exception e) 
            driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
        
    
    wait.until(ExpectedConditions.visibilityOfElementLocated(by));

【讨论】:

按要求不是 ruby​​,但我追求的是 Java,所以我很高兴 ;)【参考方案4】:

我在 appium java 中使用这个解决方案:

Thread.sleep(1000);

WebDriverWait wait = new WebDriverWait(driver, 30); wait.until(ExpectedConditions.elementToBeClickable(By.name("somename")));

【讨论】:

以上是关于使用 Appium 和 Ruby 测试 iOS 应用程序时等待元素加载?的主要内容,如果未能解决你的问题,请参考以下文章

为 iOS 应用测试自动化设置 appium [关闭]

Ruby:iOS:使用appium查找屏幕中的所有元素

2022主流技术 Appium+IOS 自动化测试环境搭建

App自动化测试探索MAC环境搭建iOS+Python+Appium测试环境

Appium 配置文件

Appium--环境搭建