双击失败,org.openqa.selenium.WebDriver异常:未知错误:无法解析getElementRegi



我想双击一个元素,因此有以下代码 -

Actions builder=new Actions(driver);
builder.doubleClick(visibleElement).perform();

但双击后,结果是——

org.openqa.selenium.WebDriverException: unknown error: failed to parse value of getElementRegion

我用谷歌搜索了很多,但不明白是什么原因以及如何解决这个问题。你能帮忙吗?

此错误消息...

org.openqa.selenium.WebDriverException: unknown error: failed to parse value of getElementRegion

。意味着GetElementRegion()方法无法分析该值。


深入探讨

此错误来自 element_util.cc:

Status GetElementRegion(
Session* session,
WebView* web_view,
const std::string& element_id,
WebRect* rect) {
Status status = CheckElement(element_id);
if (status.IsError())
return status;
base::ListValue args;
args.Append(CreateElement(element_id));
std::unique_ptr<base::Value> result;
status = web_view->CallFunction(
session->GetCurrentFrameId(), kGetElementRegionScript, args, &result);
if (status.IsError())
return status;
if (!ParseFromValue(result.get(), rect)) {
return Status(kUnknownError,
"failed to parse value of getElementRegion");
}
return Status(kOk);
}

原因和解决方案

此错误可能有多种原因和解决方案,如下所示:

  • 确保visibleElement的定位器策略在 DOM 树中唯一标识元素
  • 诱导WebDriver在调用doubleClick()之前等待elementToBeClickable(),如下所示:

    new Actions(driver).doubleClick(new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(visibleElement))).perform();
    
  • 添加build()步骤:

    new Actions(driver).doubleClick(new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(visibleElement))).build().perform();
    
  • 在尝试从操作类调用doubleClick()之前,请确保Selenium的焦点位于正确的框架中,即顶级视图<iframe>元素。

在这里,您可以找到有关在 iframe 下处理 #document 的方法的相关讨论

  • 确保元素不在任何 #shadow 根或影子 dom 中。

在这里你可以找到一个相关的讨论 如何使用硒自动化影子 DOM 元素?

最新更新