c# - 无法通过这些策略定位元素: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++ - 字符串向量在排序之前可以正常工作,但之后它不能做任何事情
- reactjs - 这段代码(来自 React 文档)在什么情况下可能会失败,或者实际上会触发最终的回退条件?
- performance - 将文件上传到部署为 Azure Web 应用程序的 Blazor 服务器应用程序的速度极慢
- java - 如何使用回收适配器的意图在 Web 浏览器中打开 URL
- python - 循环遍历另一个字典内的字典内列表的值
- python - Plotly Dash - 在条形图上添加水平线
- javascript - 如何在字典列表中获取带有键的元素
- azure - Okta 作为 Azure 的 IDP
- css - 在 navitem 中间居中巨型菜单
- django - Django - NoReverseMatch 在 /project/3/evillio