[英]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.