Мой вопрос похож на этот: Как получить HTML-код WebElement в Selenium
Я пытаюсь нажать кнопку закрытия, которая выглядит так:
OuterHTML: <input class = "form-control btn btn-clear" style = "font-family: MapIcons; padding: 0px;" value = "" type = "button">
Этот атрибут значения отображается в поиске в Юникоде как шестнадцатеричный 0xE01D.
Я пытаюсь сопоставить этот атрибут, прежде чем нажимать на него.
Это мой код:
List<WebElement> elements = driver.findElements(By.xpath("//input[contains(@class, 'form-control btn btn-clear')]"));
Common.myPrint(thisClass + " elements count: " + elements.size());
for (WebElement element : elements) {
// select an element
if (element.isDisplayed()) {
String text=element.getAttribute("value");
if (text!=null) {
Common.myPrint(thisClass + " text: " + text);
// I would like to put compare text here, to ensure I have
// correct element, before clicking on it.
}
}
}
Я запустил это, и Console.log отображает это:
text: ?
поэтому может показаться, что WebElement.getAttribute ("значение") в любом случае не возвращает это значение точно.
driver.findElement(By.cssSelector("input[value='\uE01D']")); должен вернуть элемент из HTML вашего сообщения. Имейте в виду, что ваша консоль / вывод должны поддерживать Unicode, чтобы свойство отображало символ. В противном случае символ заменяется на ?.




Он не может его отобразить, это не значит, что он не возвращает его правильно. Вам нужно убедиться, что
Common.myPrintправильно работает с UTF8. Также он должен работать, если вы выберете такой элемент:driver.findElement(By.xpath("//input[contains(@value, '\\uE01D')]"));