【问题标题】:How do you click on an element which is hidden using Selenium WebDriver?如何单击使用 Selenium WebDriver 隐藏的元素?
【发布时间】:2013-07-01 03:38:47
【问题描述】:

我有一个使用 WebDriver 和 Python 自动化的 Web 应用程序。

问题是有一个类似这样的菜单 如果我手动单击箭头按钮,它会展开到另一个子菜单,我需要从中选择特定字段。

我可以找到第三个菜单,但是当我使用 element.click() 单击它而不是展开菜单并向我显示其子菜单项时,它正在显示所有子菜单的合并内容。

(手动展开子菜单是通过实际点击组名前的小箭头图标来实现的) 那么我如何实际单击此箭头图标以将其中一个组菜单展开为子菜单。

如果有帮助,这是对应于第三组菜单的HTML

<div id="node_3_item" class="treeLabelSelected" style="padding-left: 0px; background-position: 0px -24px;">
<span style="background-position: 0px -24px;">XXX Groups</span>
</div>
<div style="display: none;"></div>
</div>

display: none 行实际上隐藏了子菜单(据我所知)

任何关于如何处理的建议将不胜感激。 谢谢

注意:我已经回答了几个与隐藏 Web 元素交互相关的 SO 问题,但它们与我的情况不同。

【问题讨论】:

    标签: python web-applications selenium automation webdriver


    【解决方案1】:

    你可以使用 JavaScriptExecutor

    例如。 - document.getElementsByClassName('post-tag')[0].click();

    通过 JavaScriptExecutor 发出那个 JS

      (JavascriptExecutor(webdriver)).executeScript("document.getElementsByClassName('post-tag')[0].click();");
    

    【讨论】:

    • 能否请您详细说明一下。
    • 我也不明白。我们可以看到一个真实世界的文本示例吗?我正在做ptor.driver.executeScript("document.getElementsByClassName('logout')[0].click();");,它会抛出UnknownError: {"errorMessage":"'undefined' is not a function (evaluating 'document.getElementsByClassName('logout')[0].click()')"
    【解决方案2】:

    如果您的应用程序使用jQuery,您可以使用它来指定一个目标元素,这将简化您的工作。例如

    $('.targetClass')
    

    【讨论】:

      【解决方案3】:

      抓住你要点击的元素:

      # Or using xparth or something
      element = driver.find_element_by_css_selector(css_selector)
      

      使用javascript点击它:

      driver.execute_script("$(arguments[0]).click();", element)
      

      注意:我使用的是 jQuery,否则使用 javascript 选择它本机

      【讨论】:

      • 我不得不使用 driver.execute_script("arguments[0].click();", element)
      猜你喜欢
      • 1970-01-01
      • 2016-01-07
      • 2014-04-02
      • 2020-01-29
      • 1970-01-01
      • 2012-08-15
      • 2012-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多