java - 使用 selenium 删除/更改特定元素类属性值

标签 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>

最佳答案

澄清一下,display 不是一个属性,它是 style 属性的属性之一。这是reference了解更多信息。

以下是处理您的情况的 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"));

关于java - 使用 selenium 删除/更改特定元素类属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56718699/

相关文章:

java - ActionBar 中的后退按钮 NullPointerException

java - 在运行期间获取文件名的 java 程序的 Makefile

java - 如何使用来自外部客户端的异步进程?

Java - 未找到类异常

javascript - 动态改变正文内容

html - css 在 wamp 服务器中不工作

html - CSS 使我的背景以颜色开始并以另一种(相似的)颜色背景图像 : linear-gradient 结束

python - google-chrome 无法在 flask 应用程序中以 Selenium 开头

javascript - 在 selenium webdriver 中渲染一系列响应

python - python 中的 webdriver.PhantomJS 超时?