Selenium Python:如何使用 innerText 单击跨度元素

Selenium Python: How to click on a span element with innerText

这看起来很简单。我正在尝试通过 selenium chrome 网络驱动程序单击提交按钮,这显然非常简单。但是由于某些原因,我无法这样做。

代码如下所示:-

<div class="prettyBtn primaryBtn" onclick="setIsDataAdjustHiddenField();QuoteFormSubmit();return false;"> <span> Get Quote </span></div>

附上代码片段的图片。

到目前为止,我已经尝试过 xpath,class“btn”的完整 Xpath,class“prettyBtn primaryBtn”。

没有成功,我想用class名称“find_elements_by_class_name”来监视他们,但仍然无法点击按钮。

这是我到目前为止尝试过的方法:-

通过 Span 标签:

driver.find_elements_by_xpath("//span[text()='Get Quote']").click()

来自 class 姓名:

driver.find_elements_by_class_name("btn").click() 
driver.find_elements_by_class_name("prettyBtn primaryBtn").click()

我确实查看了文档和其他一些解决方案,但到目前为止运气不佳...我还有其他网页可以填写并提交表格,但这个网页除外。有什么帮助或建议吗?

<span>中的innerText包含前导和尾随空格你必须考虑它,你可以使用以下任一项 :

  • 使用 xpathnormalize-space():

    element = driver.find_element(By.XPATH, "//span[normalize-space()='Get Quote']")
    
  • 使用 xpathcontains():

    element = driver.find_element(By.XPATH, "//span[contains(., 'Get Quote')]")
    

要理想地点击元素,您需要诱导 WebDriverWait for the and you can use either of the following :

  • 使用 xpathnormalize-space():

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[normalize-space()='Get Quote']"))).click()
    
  • 使用 xpathcontains():

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[contains(., 'Get Quote')]"))).click()
    
  • 注意:您必须添加以下导入:

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