Нажмите на значок графика, используя селен - PullRequest
1 голос
/ 07 октября 2019

Я не могу щелкнуть значок графика в проекте Angular8.

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Исключение, которое вы получаете, OpenQA.Selenium.WebDriverTimeoutException, возникает в вашем методе ожидания NgWebDriver.WaitForAngular(). Это показывает, что WebDriver ожидает, что что-то появится / будет доступно для щелчка / и т. Д., Но не сможет сделать это до достижения предельного времени ожидания.

Просто исходя из структуры и имен классов вашего HTML, элемент, который вы пытаетесь щелкнуть, может быть одним из:

  • Внутри / покрыт другим элементом, то есть i-элемент внутри кнопки, или это элемент, который вы на самом деле хотите щелкнуть под i-элементом?
  • Элемент скрыт, и, поскольку селен рассчитан на такие щелчки, он не может щелкнуть этот элемент.

Я предлагаю вам поэкспериментировать с нажатием на родительский элемент или посмотреть, есть ли другой дочерний элемент, на который вы должны щелкнуть. Если это не помогло, вы также можете попробовать щелкнуть по 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 любым способом выбора элемента, который вы предпочитаете).

0 голосов
/ 07 октября 2019

Возможно, у вас возникла проблема с XPath, который вы используете. Я предлагаю использовать тот, который запрашивает непосредственно на элементе кнопки:

    NgWebElement GraphIcon = ngDriver.FindElement(By.XPath("//button[contains(@class, 'btnItems') and *[contains(@class, 'fa-line-chart')]]"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...