我有一个基于 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/