【问题标题】:How to select an element style with selenium webdriver如何使用 selenium webdriver 选择元素样式
【发布时间】:2020-12-27 12:32:44
【问题描述】:

我无法让网站显示它的硒隐藏部分。我已经尝试过在 stackoverflow 上找到的旧遮阳篷,但它们似乎不再起作用了。我也看到开发人员通过请求解决了这个问题,但这不是我所熟悉的。

我正在尝试使验证码标记元素可见以使网站自动化。为了编写我的代码,我正在 google recaptcha 演示网站 (https://www.google.com/recaptcha/api2/demo) 上进行培训。

我遇到了麻烦,因为为了显示这个元素,我需要单击 HTML 中的一个案例,而我不知道如何使用 selenium 来做到这一点。

我看到有人说,为了显示元素,我只需要删除 HTML 中的 display : none; 字符串,但它不起作用。我似乎找到的唯一方法是单击 element.style{ 用谷歌浏览器检查元素的案例。

我需要与之交互的网站代码的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; 大小写

当我点击那个案例时(我放了 2 个屏幕截图,这样你就更清楚了)它会在代码中写下这个:

/* 显示:无; */

然后隐形元素出现,我可以与之交互。

我的问题是,我如何让 selenium 做到这一点?我确实知道它与 CSS 有关,但由于没有与 display: none 相对的字面意思,我不知道该怎么做。

如果我不够清楚,请告诉我。

谢谢

Element isn't displayed

Element is displayed

【问题讨论】:

    标签: python html css selenium


    【解决方案1】:

    您可以使用 javascript 删除样式属性。你可以告诉 selenium 为你执行 javascript 代码。

    类似这样的:

    driver.execute_script('document.getElementById("g-recaptcha-response").style.display = null;')
    

    有关在 selenium 中执行 javascript 的更多信息:

    https://pythonbasics.org/selenium-execute-javascript/

    有关使用 javascript 删除样式属性的更多信息:

    Remove Style on Element

    【讨论】:

      猜你喜欢
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-09
      相关资源
      最近更新 更多