如何使用python selenium单击span元素

use*_*831 4 python selenium xpath

我试图用python selenium点击这一整天没有运气,尝试了几个选择器,xpath ..似乎没有什么对我有用.这是我尝试点击的元素:

<span style="vertical-align: middle;">No</span>
Run Code Online (Sandbox Code Playgroud)

这是我明显的非功能代码

driver.find_element_by_link_text("No")
Run Code Online (Sandbox Code Playgroud)

And*_*son 10

通过链接文本搜索只有在您span是锚标记的子项时才能帮助您,例如<a><span style="vertical-align: middle;">No</span></a>.当你试图点击它时,我相信它真的在一个锚点内,但如果不是,我建议你使用XPath谓词,True只有当精确的文本内容匹配时才会返回:

//span[text()="No"]
Run Code Online (Sandbox Code Playgroud)

请注意,这//span[contains(text(), "No")]是非常不可靠的解决方案,因为它将返回span带有文本的元素

  • "十一月的雨"
  • "是的.没有."
  • "我觉得查克诺里斯可以帮助你"

等等...

如果你得到NoSuchElementException你可能需要等待元素出现在DOM:

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

wait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//span[text()='No']"))).click()
Run Code Online (Sandbox Code Playgroud)

  • 哇谢谢你,伙计,你是国王!经过两天的尝试,终于解决了! (2认同)