我试图用 python selenium 单击它一整天,但没有运气,尝试了几个选择器,xpath ..似乎没有什么适合我。这是我尝试点击的元素:
<span style="vertical-align: middle;">No</span>
这是我明显的非功能代码
driver.find_element_by_link_text("No")
原文由 user3281831 发布,翻译遵循 CC BY-SA 4.0 许可协议
我试图用 python selenium 单击它一整天,但没有运气,尝试了几个选择器,xpath ..似乎没有什么适合我。这是我尝试点击的元素:
<span style="vertical-align: middle;">No</span>
这是我明显的非功能代码
driver.find_element_by_link_text("No")
原文由 user3281831 发布,翻译遵循 CC BY-SA 4.0 许可协议
我也在我的项目中为 Spotify 做一些事情。这是我编写的用于选择 span html 标签中的性别的函数。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import random
gender_male = wait.until(EC.presence_of_element_located((By.XPATH, "//span[text()='Male']")))
gender_female = wait.until(EC.presence_of_element_located((By.XPATH, "//span[text()='Female']")))
non_binary = wait.until(EC.presence_of_element_located((By.XPATH, "//span[text()='Non-binary']")))
other = wait.until(EC.presence_of_element_located((By.XPATH, "//span[text()='Other']")))
pnts = wait.until(EC.presence_of_element_located((By.XPATH, "//span[text()='Prefer not to say']")))
gender_guess = random.randint(1, 5)
if gender_guess == 1:
gender_male.click()
elif gender_guess == 2:
gender_female.click()
elif gender_guess == 3:
non_binary.click()
elif gender_guess == 4:
other.click()
elif gender_guess == 5:
pnts.click()
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
gender_male = wait.until(EC.presence_of_element_located((By.XPATH, "//span[text()='Male']")))
gender_female = wait.until(EC.presence_of_element_located((By.XPATH, "//span[text()='Female']")))
non_binary = wait.until(EC.presence_of_element_located((By.XPATH, "//span[text()='Non-binary']")))
other = wait.until(EC.presence_of_element_located((By.XPATH, "//span[text()='Other']")))
pnts = wait.until(EC.presence_of_element_located((By.XPATH, "//span[text()='Prefer not to say']")))
gender_guess = random.randint(1, 5)
if gender_guess == 1:
gender_male.click()
elif gender_guess == 2:
gender_female.click()
elif gender_guess == 3:
non_binary.click()
elif gender_guess == 4:
other.click()
elif gender_guess == 5:
pnts.click()
希望这有所帮助。
原文由 unofficialdxnny 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
2 回答857 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
仅当您的
span
是锚标记的子项时,按链接文本搜索才能为您提供帮助,例如<a><span style="vertical-align: middle;">No</span></a>
。当您尝试单击它时,我相信它确实位于锚点内,但如果不是,我建议您使用XPath
和返回True
的谓词,仅当确切的文本内容匹配:请注意
//span[contains(text(), "No")]
是非常不可靠的解决方案,因为它将返回span
带有文本的元素ETC…
如果你得到
NoSuchElementException
你可能需要等待元素出现在DOM
: