Angular selenium中的元素单击截获错误

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 ****

我有一个问题,硒,测试网站

我想在此屏幕中按pub name(发布名称)字段:

正如你所看到的,这是一个打开的侧菜单, 这是Html:

我试图等待元素被点击,它通过了。 这是我的代码:

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)处不可单击。其他元素将收到单击:。。。
  • 我还试着让selenium按下esc按钮,但这仍然是错误, 我如何克服这个问题

  • 我如何知道在哪里单击该元素将可以自由单击我需要的位置 让他按一下 这不是等待问题,因为当我调试时,我等待了更多次,但仍然会出现此错误


  • 关于

    异常消息表示特定元素位于目标前面。我在两个屏幕截图中都没有看到,但很明显,它会在测试运行时显示出来。
    您应该观察调试器的运行,看看是否有弹出的通知,拦截自动单击,然后消失


    您可能需要等待通知并取消该通知,然后才能单击您的输入。

    出现此问题的原因如下:

    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:你可以直接使用浏览器作为。。。它是量角器提供的内置对象。。。只需复制这些行并在脚本中使用它,我不是在使用量角器