0

我使用 Visual Studio 2015 作为我的 IDE,并在我的项目中安装了量角器(版本 0.10.2)。现在,在我下面的代码中 ,我想使用 buttonText 定位器定位“登录”按钮。但是,当我尝试时,在 NgBy. 之后只显示以下选项:Binding、Equals、ExactBinding、ExactRepeater、Model、ReferenceEquals、Repeater、SelectedOpion[TestMethod] public void Login() { IWebDriver driver = new ChromeDriver();
var ngDriver = new NgWebDriver(driver); ngDriver.Url = "https://weather.com"; ngDriver.FindElement(By.ClassName("user-login")).Click();
ngDriver.FindElement(NgBy.)

当我使用 WebStorm 和 Javascript 进行尝试时,我能够找到并使用下面的按钮 element(by.buttonText('Log In')).click();

为什么在 NgBy. 之后没有出现类似 'ButtonText' 的内容?

即使在Anthony Chu 的博客中,他也在使用 Ngby.Input(),我没有在列表中。为什么我错过了所有这些定位器?


我发现 Protractor 下的 NgBy 类只提供以下内容: class NgBy

所以也许 Protractor-net 不提供 NgBy.ButtonText()?但这对我来说没有意义。我觉得我还是做错了什么!

4

2 回答 2

0

请参阅此拉取请求的评论: https ://github.com/bbaia/protractor-net/pull/22

于 2017-04-05T19:30:17.057 回答
0

你是对的,在与原始 Protractor 项目相比时,在“主要”Protractor-net fork(由 bbaia 维护)中缺少一些 NgBys。

选项1

您通常可以改用普通的 .Net WebDriver By(例如 XPath 或 CssSelector)来定位元素:

使用 XPath 通过内部文本查找按钮

使用 XPath 按属性值和文本查找按钮

您可能还会发现这很有价值 - Find element by case insensitive text with XPath

选项2

您还可以使用类似的东西编写自己的实现 driver.FindElements(By.TagName("button")).Where(e => e.Text.Trim() == "Text").FirstOrDefault(); 注意,在许多情况下,这比使用 XPath 慢得多。

选项3

如果,因为您正在移植已经使用这些方法的代码,那么拥有它们对您很重要,您可以尝试 sergueik fork,它确实缺少方法: https ://github.com/sergueik/protractor-net

请注意,它在主分支之后更远 - https://github.com/sergueik/protractor-net/network

于 2017-04-26T04:26:48.023 回答