gpt4 book ai didi

javascript - javascript中selenium-webdriver在不同环境下测试的策略

转载 作者:行者123 更新时间:2023-12-02 17:27:50 26 4
gpt4 key购买 nike

我一直在使用 yadda 库使用 selenium-webdriver 进行功能测试。问题在于,在我的不同环境中,相同的测试套件的工作方式不同。示例:

在测试中,根据我进入的环境,结果有所不同。

本地 localhost:5000

Open my search site
․ when i go to my site: 2169ms
․ when i write a text on the search input: 21ms
․ when i click the search button: 130ms
․ then i get the results page.": 46ms

暂存 mystaging.domain.com

 Open my search site: 
StaleElementReferenceError: {"errorMessage":"Element is no longer attached to the DOM","request":{"headers":{"Accept":"application/json; charset=utf-8","Connection":"close","Content-Length":"2"

生产 www.domain.com

   Open my search site
․ when i go to my site: 2169ms
․ when i write a text on the search input: 21ms
․ when i click the search button: 130ms
․ then i get the results page.": 46ms

目前,只有登台测试失败,但在其他情况下,当互联网连接速度较慢时,测试在生产中失败,但在登台测试中通过。主要问题是浏览器没有准备好测试的 DOM,并且找不到测试所需的元素。

我尝试解决此问题的方法是等待页面的根元素出现,如下所示:

return driver.wait(() => driver.isElementPresent(By.css(".my__homepage")), 50000);

但这对我来说还不够,因为测试套件仍然随机失败。所以,我的问题是:

哪种方法可能是在不同环境中运行处理浏览器上尚未准备好的元素的测试套件的最佳方法?

最佳答案

我向您展示了一个简单的 C# 代码,该代码是我在 IE 浏览器中完成的工作,但它对于其他浏览器和语言也可以类似地工作。

private static WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(120)); //max driver wait timeout 120 seconds

try
{
//waiting for document to be ready
IJavaScriptExecutor jsExecutor = (IJavaScriptExecutor)driver;
wait.Until(sc => jsExecutor.ExecuteScript("return document.readyState").Equals("complete"));

//waiting for an element.
//use 'ExpectedConditions.ElementToBeClickable' as in some cases element gets loaded but might not be still ready to be clicked
wait.Until(ExpectedConditions.ElementToBeClickable(By.Id("elementID")));
}
catch (Exception ex)
{

}
  • 基本上,我正在使用 JavaScript 执行器等待文档准备就绪
  • 此外,我对要访问的每个元素都设置了隐式等待。我使用预期条件作为 ElementToBeClickable,因为有时 ElementIsPresent 并不意味着可以根据您的需要访问元素。

注意:此外,您可能还需要根据您的需要检查其他元素属性(例如启用/禁用等)。

关于javascript - javascript中selenium-webdriver在不同环境下测试的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45493981/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com