【问题标题】:Hi can someone explain what this error means and what i can do to prevent this button?嗨,有人可以解释这个错误的含义以及我可以做些什么来阻止这个按钮吗?
【发布时间】:2022-01-03 15:24:40
【问题描述】:

背景 我在尝试单击按钮时遇到此错误。但是,网页会显示我无法按下这个提交按钮,然后它会给我这个错误并停止运行程序。有谁知道如何解决这个错误。我目前正在使用 CSS 选择器来查找按钮。如果我改用另一种方法,例如 XPATH 方法,会有什么不同吗?此外,我已 100% 验证我已键入正确的元素,同时合并了 WebDriverWait(EC.element_to_be_clickable(slot_submit_button), 4)。我只研究python和selenium,所以我对JavaScript的了解不多,所以请用简单的语言给我解释一下,以便我理解这个问题。 非常感谢您的帮助!

Traceback (most recent call last):
  File "C:\Users\Jonathan\PycharmProjects\BBDCBOT\BBDC1.py", line 88, in <module>
    slot_submit_button.click()
  File "C:\Users\Jonathan\venvs\automation\lib\site-packages\selenium\webdriver\remote\webelement.py", line 80, in click
    self._execute(Command.CLICK_ELEMENT)
  File "C:\Users\Jonathan\venvs\automation\lib\site-packages\selenium\webdriver\remote\webelement.py", line 693, in _execute
    return self._parent.execute(command, params)
  File "C:\Users\Jonathan\venvs\automation\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 418, in execute
    self.error_handler.check_response(response)
  File "C:\Users\Jonathan\venvs\automation\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 243, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <input type="button" name="" value="Submit" class="btn" onclick="postBooking(this.form, 'b-TPDSBookingConfirm.asp?limit=TPDS', '', 'Please select a slot to
book.')" onmouseover="blueBtnOver(this)" onmouseout="blueBtnOut(this)"> is not clickable at point (118, 330). Other element would receive the click: <td class="bluetxt">...</td>
  (Session info: chrome=96.0.4664.45)
Stacktrace:
Backtrace:
        Ordinal0 [0x00743AB3+2505395]
        Ordinal0 [0x006DAE41+2076225]
        Ordinal0 [0x005E2498+1057944]
        Ordinal0 [0x00612C09+1256457]
        Ordinal0 [0x00610F48+1249096]
        Ordinal0 [0x0060ED0D+1240333]
        Ordinal0 [0x0060DB68+1235816]
        Ordinal0 [0x00603857+1194071]
        Ordinal0 [0x006259F3+1333747]
        Ordinal0 [0x00603676+1193590]
        Ordinal0 [0x00625ADA+1333978]
        Ordinal0 [0x00635168+1397096]
        Ordinal0 [0x006258BB+1333435]
        Ordinal0 [0x006023E4+1188836]
        Ordinal0 [0x0060323F+1192511]
        GetHandleVerifier [0x008CCB36+1554566]
        GetHandleVerifier [0x00974A0C+2242396]
        GetHandleVerifier [0x007D0E0B+523099]
        GetHandleVerifier [0x007CFEB0+519168]
        Ordinal0 [0x006E02FD+2097917]
        Ordinal0 [0x006E4388+2114440]
        Ordinal0 [0x006E44C2+2114754]
        Ordinal0 [0x006EE041+2154561]
        BaseThreadInitThunk [0x76A7FA29+25]
        RtlGetAppContainerNamedObjectPath [0x77097A9E+286]
        RtlGetAppContainerNamedObjectPath [0x77097A6E+238]

更新: 这是元素的 XPATH:slot_submit_button = browser.find_element(By.XPATH, '/html/body/table/tbody/tr/td[2]/form/table[2]/tbody/tr[1]/td[1]/input[2]')

这是元素的 CSS 选择器:slot_submit_button = browser.find_element(By.CSS_SELECTOR, 'input[value="Submit"]')

【问题讨论】:

  • 使用元素的相关 HTML 更新问题。
  • @DebanjanB 我已经更新了元素的相关HTML

标签: python selenium button element stack-trace


【解决方案1】:

错误表示该案例是网络元素重叠。在这里,Click 是根据您的代码执行的,但是在该位置存在一些其他元素,这些元素进行了该点击。

使用javascript解决:-

button = find_element(By.XPATH, '<Valid Xpath>')
driver.execute_script("arguments[0].click();", button)

方法是使用 javascript 代码单击它,该代码对找到的与 XPath 匹配的第一个参数执行单击操作。

【讨论】:

  • 这确实是一个可能的解决方案,但它没有解释为什么会发生错误,就像 OP 要求的那样。无论如何都赞成,但也要尝试包括解释。
  • 嗨@kumar Rishabh,我能问一下驱动程序execute_script代码行中的参数[0]是什么意思吗?
  • 获取与 Xpath 匹配的第一个对象。
【解决方案2】:

此错误表示该元素存在于 DOM 中,但它与某些其他元素重叠。

在你的情况下,

<input type="button" name="" value="Submit" class="btn" onclick="postBooking(this.form, 'b-TPDSBookingConfirm.asp?limit=TPDS', '', 'Please select a slot to
book.')" onmouseover="blueBtnOver(this)" onmouseout="blueBtnOut(this)"> 

被重叠

<td class="bluetxt">...</td>

【讨论】:

  • 这是正确的答案,但是我想补充一点,硒试图单击该元素与另一个元素重叠。您尝试点击的元素不一定完全重叠,但也可能只是部分重叠在您尝试点击的点上。
  • 嗨@Mayank Shukla,我能问一下为什么会发生这样的错误吗?为什么元素会被其他元素重叠?选择另一个选择器会防止这样的错误吗?
  • 嗨@ToangarashiWoon,有时当我们尝试定位元素时,即使出现在其他屏幕上,但仍然可以定位但我们无法对其执行任何操作。所以会出现这种异常
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-07
  • 2018-09-24
  • 2010-12-17
  • 2014-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多