这是元素:
<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 使用 onclick 和 title:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//label[@title='Place Order'][@onclick=\"AjaxPageLoad(fno, 'FNOOrder');\"]"))).click()
xpath 使用 onclick、title 和 innerHTML:
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/