繁体   English   中英

迁移角度6版本后,NgWebDriver无法单击元素

[英]NgWebDriver can't click on element after angular 6 version migrated

我正在使用的当前配置:

Chrome- 73量角器 - 0.12.0 Nunit - 3.11.0 Chromedriver- 3.141.0 Windows- 10

在Angular 6上迁移后,我的测试框架没有点击元素。 我使用NgWebDriver

<div class="home-page--sections">
<!---->
<a id="menuItemImgBtnTransactions" class="home-page--section" href="/sales/transactions">

 NgWebDriver driver;
 public HomePage(IWebDriver driver)
 {
    this.driver = (NgWebDriver)driver;
 }
 By transactionsTab = By.Id("menuItemImgBtnTransactions");


//driver.WaitForAngular(); // I use wait PageLoad,AsynchronousJavaScript waiters
IWebElement transaction = driver.FindElement(transactionsTab);
transaction.Click();

我使用通常的WD登陆(登录)页面,它工作正常,但当我尝试使用ng驱动程序进入事务页面时(很多测试用ngdriver =我的框架编写)

我收到了OpenQA.Selenium.WebDriverTimeoutException会话信息:chrome = 73.0.3683.86驱动程序信息:chromedriver = 73.0.3683.68()

有什么想法吗?

看看你的代码:

By transactionsTab = By.Id("menuItemImgBtnTransactions");


//driver.WaitForAngular(); // I use wait PageLoad,AsynchronousJavaScript waiters
driver.FindElement(transaction));
transaction.Click();

您已将定位器定义为transactionsTab ,但您将transaction传递给FindElement()函数。 不确定为什么要将定位器定义为变量,但如果使用该策略,则以下内容应该有效:

By transactionsTab = By.Id("menuItemImgBtnTransactions");


//driver.WaitForAngular(); // I use wait PageLoad,AsynchronousJavaScript waiters
driver.FindElement(transactionsTab)).Click();

您也可以在一行中完成:

driver.FindElement(By.Id(“menuItemImgBtnTransactions”)).Click();

或者,如果您想重用该WebElement,我会这样做:

IWebElement transactions = driver.FindElement(By.Id(“menuItemImgBtnTransactions));
transactions.Click();

您可以使用transactions元素执行任何操作。

JavaScript单击适用于常规click()失败的角度:使用C#

var jsdriver = driver as IJavaScriptExecutor;

jsdriver?.ExecuteScript("arguments[0].click();", element);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM