Сбой двойного щелчка с org.openqa.selenium.WebDriverException: неизвестная ошибка: не удалось проанализировать значение getElementRegion - PullRequest
0 голосов
/ 06 января 2020

Я хочу дважды щелкнуть элемент, поэтому у меня следующий код -

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

Но для двойного щелчка это приводит к -

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

Я много гуглил, но сделал не понять, что является причиной этого и как решить эту проблему. Не могли бы вы помочь с этим?

1 Ответ

0 голосов
/ 06 января 2020

Это сообщение об ошибке ...

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);
}

Причины и решения

Возможны различные причины и решения этой ошибки, такие как следует:

  • Убедитесь, что стратегия Locator для visibleElement уникально идентифицирует элемент в дереве DOM
  • Ввести WebDriverWait для elementToBeClickable() перед вызовом doubleClick() следующим образом:

    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() из Действия Класс, убедитесь, что Селен имеет фокус в правильной Рамке т. е. либо Вид верхнего уровня , либо элемент <iframe>.

Здесь вы можете найти соответствующую дискуссию по Способам решения # документ и er iframe

Здесь вы можете найти актуальное обсуждение Как автоматизировать теневые элементы DOM с помощью селена?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...