Это сообщение об ошибке ...
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 с помощью селена?