Написал JavaScript который возвращает элемент:
document.querySelector("main.message__body")
далее так: executeJavaScript("document.querySelector('main.message__body')")
И возвращается null
.
Написал JavaScript который возвращает элемент:
document.querySelector("main.message__body")
далее так: executeJavaScript("document.querySelector('main.message__body')")
И возвращается null
.
А попробуйте добавить .toString();
не помогло
А попробуте добавить тогда сюда .text
По идее, если у элемента есть текст, то он должен его вывести.
Ну и кавычки должны же быть двойные… Надо их экранировать.
надо добавить return
executeJavaScript(“return document.querySelector(‘main.message__body’)”)
return на удивление помог) а вы знаете как вернуть SelenideElement, чтобы дальше можно было с ним работать?)
А что именно вы хотите с ним сделать?
с помощью String.fromat() я формирую вот такой js и применяю.
return document.evaluate("//main[contains(@class,'message__body') and contains(.,'Куплю')]//li[contains(.,'Кол-во')]/p[@class='list__value']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.innerHTML.match(/40(.|,)8/);
как видите, я проверяю что в нужном месте отображается нужное число. заморочено так из-за того что разделителем может быть и запятая и точка. конечно смотря на этот длинный код формирования скрипта и его не работы, я начинаю думать что сделать через or дубль с двумя разделителями не такая плохая идея была)
Стало просто интересно как вернуть Element с которым можно работать с помощью Selenide или Selenium. думаю узнав это все проблемы решатся
Лично я использую jQuery.
На C# возвращается IWebElement, думаю что по аналогии должно быть и на Java, вернётся интерфейс WebElement.
Такой код:
var ele = $(arguments[0]);
return ele;
Если не сработает, то всегда можно попробовать вернуть чистый элемент:
var ele = $(arguments[0])[0];
return ele;
Только необходимо, чтобы jQuery был на странице.
Если его там нет, вы перед вызовом этой функции можете его туда добавить
var ele = document.createElement("script");
ele.src = "https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js";
var head = document.getElementsByTagName("head")[0];
head.appendChild(ele);