удалить / изменить определенное значение атрибута класса элемента, используя селен - PullRequest
0 голосов
/ 22 июня 2019

У меня проблема из-за подобного вопроса , у которого есть ответ, но он мне не подходит.У меня есть элемент, который не настроен как этот class="vote-link up", где было бы легко заставить класс изменить свой атрибут, потому что это всего лишь одно слово, где мое не похоже на него.

HTML-кодвыглядит так: <textarea id="g-recaptcha-response" name="g-recaptcha-response" class="g-recaptcha-response" style="width: 250px; height: 40px; border: 1px solid rgb(193, 193, 193); margin: 10px 25px; padding: 0px; resize: none; display: none;"></textarea>

И я хочу удалить display: none;, которые являются двумя последними атрибутами HTML-кода.Или измените его на display: shown;, выполнив один из показанных мною вариантов, и получится тот же результат, который я хочу, я просто не знаю, как это сделать.

т.е. это то, что я хочу, чтобы изменитьHTML к этому <textarea id="g-recaptcha-response" name="g-recaptcha-response" class="g-recaptcha-response" style="width: 250px; height: 40px; border: 1px solid rgb(193, 193, 193); margin: 10px 25px; padding: 0px; resize: none;"></textarea>

1 Ответ

1 голос
/ 23 июня 2019

Просто для пояснения, display - это не атрибут , это одно из свойств style атрибута. Вот ссылка для получения дополнительной информации.

Вот 2 варианта обработки вашего сценария.

Опция 1: Обновите значение свойства отображения стиля до block

JavascriptExecutor js = (JavascriptExecutor)driver;
WebElement ele = driver.findElement(By.id("g-recaptcha-response"));
System.out.println("Before updating the property:" + ele.getAttribute("style"));
js.executeScript("arguments[0].style.display = 'block';",ele);
System.out.println("After updating the property:" + ele.getAttribute("style"));

Вариант 2: Удалить стиль> свойство отображения

JavascriptExecutor js = (JavascriptExecutor)driver;
ele = driver.findElement(By.id("g-recaptcha-response"));
js.executeScript("arguments[0].style.removeProperty('display')",ele);
System.out.println("After deleting the property:" + ele.getAttribute("style"));
...