【问题标题】:Selenium Webdriver in VS with C# - Using promisesVS 中的 Selenium Webdriver 与 C# - 使用 Promise
【发布时间】:2017-08-31 14:43:36
【问题描述】:

我实际上还没有为这个问题找到一个明确的“是”或“否”答案。 Selenium WebDriver 可以使用承诺或回调,而不必使用 Thread.Sleep 或其他一些轮询方法吗?

目前正在使用 C# 和通过 NuGet 添加的 WebDriver 使用自动化解决方案来测试基于 React 的 Javascript 网页。

感谢任何帮助

谢谢

【问题讨论】:

  • WebDriverWaitExpectedConditions 可能会完成您想要做的事情,尽管涉及轮询。

标签: javascript c# selenium asynchronous automated-tests


【解决方案1】:

我假设您正在测试基于 JavaScript 的 UI 页面。要测试 API(服务),我们不能使用 WebDriver。使用 Selenium WebDriver,您只能测试网页。

根据我的理解,如果我们使用 C#/Java 等编程语言,我们只能在 selenium 中使用 3 type of waits(隐式、显式、流畅)。

在我当前的项目中,我们正在测试使用 JavaScript 开发的网页。为了测试这些,我们使用 Protractor(基于 WebDriverJS)和 cucumberJS。当我们用 JavaScript 编写测试自动化时,我们有回调方法。我想如果我们使用 C# 进行测试自动化回调方法是不可能的

【讨论】:

  • 是的,对不起,您是对的,正在测试基于 JavaScript 的网页。我之前在看 Protractor,但我的公司没有选择 AngularJS,而是选择了 React。他们一直主要使用 C# 来开发他们的测试框架/解决方案,但我开始认为 JS 方法会更好
【解决方案2】:

是的,WebDriver C# 允许您根据某些条件等待以避免使用Sleeps。一个典型的例子是在执行异步操作后等待一些 DOM 元素出现:

var node = new WebDriverWait(driver, new TimeSpan(0, 0, 0, 3, 0)).Until(
                ExpectedConditions.PresenceOfAllElementsLocatedBy(
                    By.XPath(".//*[contains(@ng-bind,'item.Value')]"))).First();
node.Click();

这会等待最多 3 秒,以便显示至少一个与提供的 XPath 匹配的元素。

ExpectedConditions 类有各种静态方法来测试存在性、可见性、可点击性等。

旁注:与评论相关 - 使用哪种 WebDriver 风格可能是个人喜好问题,但在 this article 中进行了非常简短的分析。

【讨论】:

    猜你喜欢
    • 2015-10-10
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 2013-10-01
    • 1970-01-01
    相关资源
    最近更新 更多