首页 文章

点(x,y)处无法点击元素

提问于
浏览
3

我有以下例外:

org.openqa.selenium.WebDriverException:元素在点上不可点击(1057.38330078125,673.13330078125) . 其他元素将收到点击:按钮id =“ID4b6a687af6934e35b6f355f6305dc481”data-layout =“hbox”class =“hux-ui-button”type =“button”role =“button”>

enter image description here

如你所见,我尝试点击按钮“Speichern” . 但奇怪的是,错误说他不能点击位置,但另一个元素是我要点击的按钮 .

你知道我为什么以及如何解决这个问题?

xpath = //span[text()='Speichern'

FF = 43.0

硒= 2.49 .

3 回答

  • 0

    好吧,你告诉司机点击 Span ,而不是按钮 . 尝试修改xpath以指向按钮 . 我认为这会起作用:

    //span[text()='Speichern']/..
    

    它确实假设只有一个元素包含该文本,并查找父元素,即您的按钮 .

  • 0

    异常清楚地表明你将在 spanclick ,而 button 元素将收到点击,所以你需要点击 button 而不是 span 如下: -

    driver.findElement(By.cssSelector("button.hux-ui-button")).click();
    

    要么

    driver.findElement(By.xpath(".//span[text()='Speichern']/parent::button")).click();
    

    Edited : - 如果您仍面临同样的问题,请尝试使用 JavascriptExecutor 执行点击,如下所示: -

    WebElement el = driver.findElement(By.xpath(".//span[text()='Speichern']/parent::button"));
    ((JavascriptExecutor)driver).executeScript("arguments[0].click()", el);
    
  • 0

    Sooo ......我刚问了一个Pro-Programmer;) .

    我不得不更新我的singelton:

    public static Optional<JavascriptExecutor> getExecutor() {
    WebDriver checkdriver = Driver.getWebInstance();
    
    final JavascriptExecutor executor;
    
    if (checkdriver instanceof JavascriptExecutor ){
    
        executor = (JavascriptExecutor)checkdriver;
    
    }
    else
    {
        executor = null;
    }
    return Optional.ofNullable(executor);
    }
    

    并将其添加到实际的页面对象中:

    WebElement el = Driver.getInstance().findElement(By.xpath(".//span[text()='Speichern']/parent::button"));
    
    Driver.getExecutor().ifPresent( (executor) -> executor.executeScript("arguments[0].click()", el) );
    

    现在它有效 . 谢谢 :)

相关问题