使用硒删除/更改特定的元素类属性值

时间:2019-06-22 19:55:37

标签: java html selenium selenium-webdriver css-selectors

我有一个基于similar question的问题,该问题有答案,但不适合我。我有一个没有像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 个答案:

答案 0 :(得分:1)

为澄清起见, display不是属性,它是style属性的属性之一。这是reference,以获取更多信息。

这是处理您的情况的两个选项。

选项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"));