当前位置: 首页 > 知识库问答 >
问题:

selenium中的元素单击截获错误

解翰采
2023-03-14

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

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

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>

>

  • 我也试着让硒按下esc按钮,但仍然是错误,我如何克服这个问题?

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

    当做

  • 共有3个答案

    谷梁鸣
    2023-03-14

    有时,您可以通过发送空格或按enter键来绕过被阻止的单击。尝试:

    element.sendKeys(Keys.SPACE);
    

    element.sendKeys(Keys.ENTER);
    

    但是,查看阻止单击的元素的类,它可能是一个通知,在这种情况下,您必须首先关闭通知。一些解释如何做到这一点的答案已经发布。

    法镜
    2023-03-14

    出现此问题的原因如下:

    1. 浏览器大小/元素不在视图端口
    2. 由于等待问题
    3. 屏幕上出现 /alert弹出窗口

    对于浏览器大小或视图端口,请使用以下选项:

    browser.manage().window().setSize(1600, 1000);
    browser.actions().mouseMove(element).click();
    

    注意:如果上述方法不起作用,请尝试链接perform()方法

    browser.actions().mouseMove(element).click().perform();
    

    等待问题:

    browser.driver.sleep(3000)
    

    注意:这不是一个标准的方式把或实现等待

    最好的办法是:

    WebDriverWait wait = new WebDriverWait(driver,60);
            wait.until(ExpectedConditions.elementToBeClickable(By.xpath("xpath")));
    

    对于弹出/警报:

    处理窗口或警报,然后执行所需的操作

    手柄窗口:

    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.driver.switchTo().alert().accept();
    

    解雇:

    browser.driver.switchTo().alert().dismiss();
    
    萧辰沛
    2023-03-14

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

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

     类似资料: