Selenium/Protractor 在远程网站上使用 BrowserStack iPhone 时 .NET 测试挂起
Selenium/Protractor .NET test hangs when using BrowserStack iPhone on remote website
我在 BrowserStack 上使用 Selenium 和 Protractor-net 以 C# 编写的测试进行 iPhone 测试时遇到问题。
测试开始 运行,在打开我网站的网页后,它只是挂起,永远不会继续进行 StringAssert 步骤。发生这种情况时没有错误。我必须手动停止我的测试和 BrowserStack 中的会话才能继续。
我尝试从 BrowserStack 的功能中打开日志记录,但没有返回任何错误并且控制台日志为空。我也尝试了 iPhone 的多个配置。
请注意,此示例测试适用于 Android Google Pixel 2 和 Windows 10 在 BrowserStack 上的测试,只是 iPhone 给了我这个问题。
这是我的样本测试:
class Class1
{
[Test]
public static void FirstTest()
{
IWebDriver driver;
DesiredCapabilities capability = new DesiredCapabilities();
capability.SetCapability("browserName", "iPhone");
capability.SetCapability("device", "iPhone 6S");
capability.SetCapability("realMobile", "true");
capability.SetCapability("os_version", "11.4");
capability.SetCapability("browserstack.console", "errors");
capability.SetCapability("browserstack.user", "");
capability.SetCapability("browserstack.key", "");
driver = new RemoteWebDriver(new Uri("http://hub-cloud.browserstack.com/wd/hub/"), capability);
driver.Manage().Timeouts().AsynchronousJavaScript = TimeSpan.FromSeconds(10);
NgWebDriver ngdriver = new NgWebDriver(driver);
ngdriver.Navigate().GoToUrl("https://myproduction.website/");
StringAssert.Contains("MyTitle", ngdriver.Title);
NgWebElement query = ngdriver.FindElement(NgBy.Model("employeeCode"));
query.Clear();
query.SendKeys("Browserstack");
Console.WriteLine(ngdriver.Title);
ngdriver.Quit();
}
}
我了解到您正在 运行 真实 iOS 设备上进行 Protractor 测试。 Protractor 使用 execute_async 方法注入 JavaScript。 Appium 不完全支持 execute_async 方法,因此您可能会看到失败。您可以在以下链接中找到有关此问题的更多详细信息:
我在 BrowserStack 上使用 Selenium 和 Protractor-net 以 C# 编写的测试进行 iPhone 测试时遇到问题。
测试开始 运行,在打开我网站的网页后,它只是挂起,永远不会继续进行 StringAssert 步骤。发生这种情况时没有错误。我必须手动停止我的测试和 BrowserStack 中的会话才能继续。
我尝试从 BrowserStack 的功能中打开日志记录,但没有返回任何错误并且控制台日志为空。我也尝试了 iPhone 的多个配置。
请注意,此示例测试适用于 Android Google Pixel 2 和 Windows 10 在 BrowserStack 上的测试,只是 iPhone 给了我这个问题。
这是我的样本测试:
class Class1
{
[Test]
public static void FirstTest()
{
IWebDriver driver;
DesiredCapabilities capability = new DesiredCapabilities();
capability.SetCapability("browserName", "iPhone");
capability.SetCapability("device", "iPhone 6S");
capability.SetCapability("realMobile", "true");
capability.SetCapability("os_version", "11.4");
capability.SetCapability("browserstack.console", "errors");
capability.SetCapability("browserstack.user", "");
capability.SetCapability("browserstack.key", "");
driver = new RemoteWebDriver(new Uri("http://hub-cloud.browserstack.com/wd/hub/"), capability);
driver.Manage().Timeouts().AsynchronousJavaScript = TimeSpan.FromSeconds(10);
NgWebDriver ngdriver = new NgWebDriver(driver);
ngdriver.Navigate().GoToUrl("https://myproduction.website/");
StringAssert.Contains("MyTitle", ngdriver.Title);
NgWebElement query = ngdriver.FindElement(NgBy.Model("employeeCode"));
query.Clear();
query.SendKeys("Browserstack");
Console.WriteLine(ngdriver.Title);
ngdriver.Quit();
}
}
我了解到您正在 运行 真实 iOS 设备上进行 Protractor 测试。 Protractor 使用 execute_async 方法注入 JavaScript。 Appium 不完全支持 execute_async 方法,因此您可能会看到失败。您可以在以下链接中找到有关此问题的更多详细信息: