单击使用 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
参数)。
我无法单击 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
参数)。