首页 > 解决方案 > 无法通过这些策略定位元素:By.id;OpenQA.Selenium.WebdriverTimeoutExceltpion:1 秒后超时

问题描述

我在 VS2017 中使用 C# 和 PageObjects 中的 Selenium Webdriver 编写了一个自动化框架。这在 Windows 中工作得非常好。MAC OS 的 VS2017 中使用了相同的 PageObjects 代码,但它在那里不起作用

OpenQA.Selenium.NoSuchElementException : 无法通过这些策略定位元素: By.Id: userNameInput;

  ----> OpenQA.Selenium.WebDriverTimeoutException : 1 秒后超时

我已将代码从 VS2017 For Windows 移至 VS2017 for Mac。即成功转换和编译。有问题但是我已经解决了与 webdriver 相关的问题,现在代码可以完美地启动 Chrome 和 Safari。但是每当我尝试查找元素时,就会发生异常。我已经实现了 Explicitwaits 和其他参数,但是 Safari 和 Chrome 在查找元素的某个阶段都给了我错误。我也尝试过查找没有 POM 的元素,但这也不起作用。

考虑到我从 Dynamics CRM 写给注销用户的以下功能

    public void UserSignOut(ref ExtentTest test)
    {
        WDEx.SwitchWindows(0);
        Browser.Driver.SwitchTo().DefaultContent();
        UserIcon.Click();
        SignOut.Click();
    }

用户图标在哪里

    [FindsBy(How = How.Id, Using = @"navTabButtonChangeProfileImageLink")]
    public IWebElement UserIcon { get; set; }

和 SignOut 是

    [FindsBy(How = How.Id, Using = "navTabButtonUserInfoSignOutId")]
    private IWebElement SignOut { get; set; }

它的工作方式应该与使用 VS2017 在 Windows Chromedriver 上工作的方式完全相同。如果有人可以提供解决方案,那么这对我来说可能会非常节省时间。提前感谢。干杯!

标签: c#macosselenium-webdrivervisual-studio-macsafaridriver

解决方案


推荐阅读