gpt4 book ai didi

javascript - 处理隐藏元素

转载 作者:行者123 更新时间:2023-11-28 07:36:37 25 4
gpt4 key购买 nike

我正在尝试抓取网站,但问题是,我无法与网站上存在的隐藏元素进行交互。代码如下:

点击前

li class="header-nav__item login header-item-is-hidden" data-toggle="dropdown" style="display:list-item"

<a class="header-nav__link" href="#login-panel" aria-controls="login-panel" aria-expanded="true" aria-haspopup="true"></a>

<script src="../../../Scripts/Login/Login.js" type="text/javascript"></script>
<script src="../../../Scripts/Login/2FALogin.js" type="text/javascript"></script>
<script src="../../../Scripts/common/error-handing.js" type="text/javascript"></script>
<div id="Login_pnlDownTime"></div>
<script type="text/javascript"></script>
li

点击后

li class="header-nav__item jp-login header-item-is-hidden is-active" data-toggle="dropdown" style="display:list-item"

<a class="header-nav__link" href="#login-panel" aria-controls="login-panel" aria-expanded="true" aria-haspopup="true"></a>

<script src="../../../Scripts/Login/Login.js" type="text/javascript"></script>
<script src="../../../Scripts/Login/2FALogin.js" type="text/javascript"></script>
<script src="../../../Scripts/common/error-handing.js" type="text/javascript"></script>
<div id="Login_pnlDownTime"></div>
<script type="text/javascript"></script>

li

我的源代码

driver = webdriver.Firefox()
driver.get("http://www.website.com/Home.aspx")
print driver.page_source
ele = driver.find_element_by_xpath("//ul[@class = 'header-nav']/li[3]")
#this is deon because the list element here is the third element in the list
ele.click()

点击元素时,下拉列表不可见。此外,ele.click() 正在模拟将鼠标悬停在元素上而不是单击元素的行为。

点击时将下拉的元素的源代码

div id="Login_pnlDownTime" /div
div id="login-panel" class="js-header-panel header-nav__dropdown right" aria-hidden="true" /div
::before
a class="privilege-promo form-section" href="/EN/enrol-now.aspx">/a
div class="privilege-form form-section"
fieldset class="frm frm--vertical"
input id="Login_hddnInvalidEmail" type="hidden" value="Invalid Email Id" name="ctl00$Login$hddnInvalidEmail"> /input
input id="Login_hddnInvalidNumber" type="hidden" value="Invalid Number" name="ctl00$Login$hddnInvalidNumber"> /input
input id="Login_hddnInvalidMobileNumber" type="hidden" value="Invalid Mobile Number" name="ctl00$Login$hddnInvalidMobileNumber"> /input
input id="Login_hddnFlashMessageDelay" type="hidden" value="10000" name="ctl00$Login$hddnFlashMessageDelay"> /input
button id="Login_btnSubmitLogin" class="btn btn-primary align-right" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBac…n$btnSubmitLogin", "", true, "LoginPage", "", false, false))" value="Continue" name="ctl00$Login$btnSubmitLogin" type="submit"> /button

如何执行对元素的点击?

最佳答案

一件事元素不(变得)可见(css:display:none),另一件事是元素从 DOM ex 中删除。 removeChild() Javascript 方法。

  • 在第一种情况下,它虽然隐藏了,但仍在 DOM 中,因此 Selenium webdriver 应该能够通过 id 或其他属性找到它。
  • 在第二种情况下,您无能为力(它不在 DOM 中)。

从您的点击 html 之前/之后,不清楚元素在哪里/它发生了什么。您会使用开发人员工具实时检查它并在您的问题中发布屏幕截图/html 吗?

更新

我发现没有 class='header-nav' 的元素只有 header-nav__dropdown 而不是 header-nav。你应该意识到这一点!如果您想使用以 header-nav 开头的类进行定位,请使用 starts-with() 函数。

其次,根据您的 xpath,该元素是 div,而不是 ul。所以div id="login-panel"class="js-header-panel header-nav__dropdown right"aria-hidden="true"/div无法定位和点击。

您能否在您的问题中粘贴带有 ullis、class='header-nav' 等的真实 html?

I cannot interact with it since it says that the element isn't visible

在我看来,您还没有掌握浏览器中的网络开发工具。您必须能够看到 dev 中所有不可见的元素。工具检查员。参见 thisthis发布我是如何做到的。

关于javascript - 处理隐藏元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31178898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com