我正在使用的当前配置:
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()
有什么想法吗?
答案 0 :(得分:0)
查看您的代码:
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
元素执行任何操作。
答案 1 :(得分:0)
在常规click()
失败的情况下,JavaScript单击可以很好地在角度上使用:使用C#
var jsdriver = driver as IJavaScriptExecutor;
jsdriver?.ExecuteScript("arguments[0].click();", element);