gpt4 book ai didi

python - 如何在 webdriver 中使用 onclick 事件作为选择器?

转载 作者:行者123 更新时间:2023-12-01 09:16:15 25 4
gpt4 key购买 nike

这是元素:

<label title="Place Order" style="cursor: pointer" onclick="AjaxPageLoad(fno, 'FNOOrder');">Place Order<div></div></label>

我正在尝试单击此按钮,但需要使用 @onclick 作为主要区别符。我读了其他类似的问题,但似乎无法让它发挥作用:

driver.find_element_by_xpath("//a[contains(@onclick,'fno')]").click()

driver.find_element_by_xpath("//a[contains(@onclick,'FNOOrder')]").click()

我得到的错误:

ElementNotInteractableException: Message: Element <a id="lnkFNO" class="active" href="javascript:void(0)"> could not be scrolled into view

但是该元素是可见的,因此我认为 xpath 一定是错误的。

最佳答案

根据您共享的 HTML,使用 onclick 事件单击所需的元素,您必须引发 WebDriverWait 并且可以使用解决方案如下:

  • xpath 使用 onclick:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//label[@onclick=\"AjaxPageLoad(fno, 'FNOOrder');\"]"))).click()
  • xpath 使用 onclicktitle:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//label[@title='Place Order'][@onclick=\"AjaxPageLoad(fno, 'FNOOrder');\"]"))).click()
  • xpath 使用 onclicktitleinnerHTML:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//label[@title='Place Order'][@onclick=\"AjaxPageLoad(fno, 'FNOOrder');\"][contains(.,'Place Order')]"))).click()

注意:您必须添加以下导入:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

关于python - 如何在 webdriver 中使用 onclick 事件作为选择器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51233901/

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