【问题标题】:Selenium [python] not clicking an <li> buttonSelenium [python] 没有点击 <li> 按钮
【发布时间】:2021-12-04 17:40:11
【问题描述】:

所以我一直在尝试使用 selenium 单击 HTML 上的 &lt;li&gt; 按钮,该按钮位于 &lt;ul&gt; 标记中,看起来像这样:

...
 <ul id="ulVisualization">
     <li class="active" id="liMap">Map</li>
     <li id="liBar" class="">Bar</li>
     <li id="liLine">Line</li>
 </ul>
...

我一直在使用以下命令通过 XPATH 获取元素:

WebDriverWait(driver, 50).until(EC.presence_of_element_located((By.XPATH,"//li[@id='liBar']"))).click()

但由于某种我无法识别的原因,此命令无法找到/单击该按钮,并且该命令会超时。
我什至尝试过:

driver.find_element_by_xpath('//li[@id="liBar"]').click()

但这也无济于事,抛出错误消息说NoSuchElementException: Message:

我将不胜感激,并提前非常感谢您。

编辑:

此外,我注意到当我手动单击按钮时,HTML 修改为:

...
 <ul id="ulVisualization">
     <li class="" id="liMap">Map</li>
     <li id="liBar" class="Active">Bar</li>
     <li id="liLine">Line</li>
 </ul>
...

稍后在 HTML 代码中显示我试图获取的数据,在我手动单击按钮之前,这些数据不可用。

【问题讨论】:

  • 也分享网站。并且一些元素是在一些动作之后动态添加的。所以你可能会错过。

标签: python html selenium xpath


【解决方案1】:

既然你想点击元素,试试element_to_be_clickable,而不是presence_of_element_located

WebDriverWait(driver,30).until(EC.element_to_be_clickable((By.XPATH,"//li[@id='liBar']"))).click()

确保您使用的定位器是唯一的,即 1/1。 Link to Refer

同时检查 Elements 是否在 iframeshadow-root 中或尝试在 newly opened browser tab 中查找元素。

如果它们都不起作用,请应用一些 time.sleep() 并检查它是否有效。

【讨论】:

  • 元素在iFrame 中,但使用它也不起作用。我什至尝试在搜索命令之前和之后放置time.sleep(5),但没有。提供TimeoutException: Message:
  • @VivaanGupta - 如果元素在iframe 中,需要switch to iframe 然后尝试访问元素。
  • 链接参考 - Link1 , Link2
猜你喜欢
  • 2023-03-31
  • 2022-01-07
  • 2022-10-15
  • 2022-01-28
  • 2014-02-16
  • 2016-05-08
  • 2021-09-14
  • 2018-05-11
  • 1970-01-01
相关资源
最近更新 更多