Angular selenium中的元素单击截获错误
我有一个问题,硒,测试网站 我想在此屏幕中按pub name(发布名称)字段: 正如你所看到的,这是一个打开的侧菜单, 这是Html: 我试图等待元素被点击,它通过了。 这是我的代码:Angular selenium中的元素单击截获错误,angular,selenium,selenium-chromedriver,Angular,Selenium,Selenium Chromedriver,我有一个问题,硒,测试网站 我想在此屏幕中按pub name(发布名称)字段: 正如你所看到的,这是一个打开的侧菜单, 这是Html: 我试图等待元素被点击,它通过了。 这是我的代码: public static void insertPublisherName(String publisherName) { // BasePage.manuallyKeyboardPressing(Keys.ESCAPE); // Logger.info("\n ****
public static void insertPublisherName(String publisherName)
{
// BasePage.manuallyKeyboardPressing(Keys.ESCAPE);
// Logger.info("\n ******************* insert publisher name by Xpath: "+ COMPANY_NAME_XPATH +" *\n **************************************************\n");
// BasePage.inputValueByXpath(publisherName,COMPANY_NAME_XPATH);
WebDriver driver2 = WebDriverMgr.getDriver();
driver2.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
WebDriverWait wait = new WebDriverWait(driver2,58);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@formcontrolname='publisher_name']")));
WebElement element = driver2.findElement(By.xpath("//input[@formcontrolname='publisher_name']"));
element.click();
element.clear();
element.sendKeys("123465");
}
这是个例外:
:ERROR: element click intercepted: Element <input _ngcontent-xni-c24="" autocomplete="off" formcontrolname="publisher_name" nz-input="" placeholder="Enter Publisher Name" class="ant-input ng-untouched ng-pristine ng-valid" ng-reflect-name="publisher_name"> is not clickable at point (1560, 116). Other element would receive the click: <div class="ng-tns-c0-94 ant-notification-notice-with-icon">...</div>
:错误:元素单击被拦截:元素在点(15601116)处不可单击。其他元素将收到单击:。。。
关于异常消息表示特定元素位于目标前面。我在两个屏幕截图中都没有看到,但很明显,它会在测试运行时显示出来。
您应该观察调试器的运行,看看是否有弹出的通知,拦截自动单击,然后消失
您可能需要等待通知并取消该通知,然后才能单击您的输入。出现此问题的原因如下:
browser.manage().window().setSize(1600, 1000);
browser.actions().mouseMove(element).click();
browser.driver.sleep(3000)
browser.manage().window().setSize(1600, 1000);
browser.actions().mouseMove(element).click();
browser.driver.sleep(3000)
注意:如果上述方法不起作用,请尝试链接perform()方法
等待问题:
browser.manage().window().setSize(1600, 1000);
browser.actions().mouseMove(element).click();
browser.driver.sleep(3000)
注意:这不是放置或实现等待的标准方式
最好的办法是:
WebDriverWait wait = new WebDriverWait(driver,60);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("xpath")));
对于弹出/警报:
browser.manage().window().setSize(1600, 1000);
browser.actions().mouseMove(element).click();
browser.driver.sleep(3000)
处理窗口或警报,然后执行所需的操作
句柄窗口:
browser.getAllWindowHandles().then(function(handles){
var count=handles.length;
var newWindow = handles[count-1];
browser.switchTo().window(newWindow).then(function(){
//do your stuff on the pop up window
});
});
处理警报:
browser.manage().window().setSize(1600, 1000);
browser.actions().mouseMove(element).click();
browser.driver.sleep(3000)
接受:
browser.driver.switchTo().alert().accept();
驳回:
browser.driver.switchTo().alert().dismiss();
有时,您可以通过发送空格或按enter键来绕过被阻止的单击。尝试:
element.sendKeys(Keys.SPACE);
或
但是,查看阻止单击的元素的类,它可能是一个通知,在这种情况下,您必须首先关闭通知。一些解释如何做到这一点的答案已经发布。我最近遇到了类似的问题。我不使用Selenium进行测试,而是将其作为一种从项目网站检索数据的自动化方法。我在某些情况下运行时遇到了相同的“ElementClickInterceptedError”错误,例如通过任务计划程序运行时,浏览器窗口是隐藏的,其几何结构很可能导致隐藏元素问题。当我在另一个选项卡中单击链接打开页面时,我放弃了“单击”的概念,而是通过getAttributes(“href”)检索链接,然后调用executeScript(“window.open(),'target');)打开链接。然后我切换到窗口并获取数据。自从我放弃单击后,错误从未返回。引用此引用此:引用此的可能重复引用此如何执行浏览器。操作().mouseMove(元素)。单击().perform();什么类型的浏览器?@Bastian:你可以直接使用浏览器作为。。。它是量角器提供的内置对象。。。只需复制这些行并在脚本中使用它,我不是在使用量角器