gpt4 book ai didi

c# - 并行运行测试和切换 iframe 时如何防止测试失败?

转载 作者:行者123 更新时间:2023-11-28 21:38:18 25 4
gpt4 key购买 nike

我目前正在维护一个使用 selenium 和 specflow 的测试解决方案,我正在顺利地并行运行所有内容,在浏览器(chrome)窗口之间共享一个 webdriver。

但现在我不得不添加几个涉及在框架之间切换的场景,并且由于未找到元素或 iframe,测试在并行运行时开始随机中断。

有谁遇到过这个问题并且知道解决这个问题的好方法吗?

编辑:一些代码这是我用来设置测试运行的类

private readonly IObjectContainer objectContainer;
private ChromeWebDriver chromeWebDriver;

public TestSetup(IObjectContainer container)
{
this.objectContainer = container;
}

[BeforeScenario]
public void SetUp()
{
chromeWebDriver = new ChromeWebDriver();
objectContainer.RegisterInstanceAs<ChromeWebDriver>(chromeWebDriver);
}

然后在步骤文件中,我将在构造函数中初始化 webdriver

 private readonly IWebDriver driver;

public LoginSteps(ChromeWebDriver chromeWebDriver)
{
this.driver = chromeWebDriver.WebDriver;
}

最佳答案

@Dayan54 - 请看下面的内容。我在 SpecFlow 中运行 4-6 个线程并且我的 iFrame 没有问题。也许这会有所帮助。

我也看到了,所以想问一下。在某些 iFrame 中,例如 FaceBook 或 InstaGram 的社交媒体登录,当您登录时,它会自动关闭 iFrame。这将在你做的任何其他事情上抛出一个错误,因为如果你尝试关闭它,你会得到一个错误,因为它已经关闭了。切换到主要内容将失败,因为您已经在那里。为此,我编写了“GoToMainHandle”方法。

 //switch to the iframe name -

public static void SwitchToIframe(string frameName)
{
try
{
Driver.SwitchTo().Frame(frameName);
}
catch (NoSuchFrameException)
{
try
{
Driver.SwitchTo().Frame(frameName);
}
catch (NoSuchFrameException)
{
Console.WriteLine("Could not switch to IFrame");
throw;
}
}
}


//going back to main content when completed with iframe


public static void SwitchToMainContent()
{
Driver.SwitchTo().DefaultContent();
}



//If the iframe closes automatically, you still need to get back to the main window

public static void GoToMainHandle()
{
var handles = Driver.WindowHandles;
foreach (var handle in handles)
{
Driver.SwitchTo().Window(handle);
break;
}
}

关于c# - 并行运行测试和切换 iframe 时如何防止测试失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55375990/

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