单击使用 selenium 的图形图标

Click a graph icon using selenium

我无法单击 Angular8 项目中的图表图标。

您可能遇到了与您使用的 XPath 有关的问题。我建议使用直接在按钮元素上查询的方法:

    NgWebElement GraphIcon = ngDriver.FindElement(By.XPath("//button[contains(@class, 'btnItems') and *[contains(@class, 'fa-line-chart')]]"));

您遇到的异常 OpenQA.Selenium.WebDriverTimeoutException 发生在您的等待方法 NgWebDriver.WaitForAngular() 中。这表明 WebDriver 正在等待 appear/be clickable/etc 的内容,但在达到等待时间限制之前未能这样做。

只需根据您的 HTML 的结构和 class 名称进行猜测,您尝试单击的元素可能是以下任一元素;

  • Inside/covered 另一个元素,即按钮内的 i 元素,或者是您实际想要单击 i 元素下方的元素?
  • 该元素是隐藏的,由于 selenium 旨在使此类点击失败,因此无法点击该元素。

我建议您尝试点击父元素,或者看看是否还有您应该点击的其他子元素。如果失败,您还可以尝试使用 JavascriptExecutor 单击:

public void ClickUsingJquery(string selector) {
    string script = String.Format("jQuery(\"{0}\").click();", selector);
    TestContext.WriteLine("Script to execute: " + script);
    var javaScriptExecutor = this.driver as IJavaScriptExecutor; 
    javaScriptExecutor?.ExecuteScript(script);
}

(用您喜欢的任何选择元素的方式替换 getElementById('{elementId}').click()selector 参数)。