您无法将多个链接文本传递给find_element_by_link_text()
。
您有多种方法可以解决问题。你可以,例如,切换到使用XPath定位 - 动态地构建一个表达检查所有的链接文本的变化:
link_texts = ["Head", "Feet", "Hand", "Fingers"]
expression = "//a[%s]" % (" or ".join(". = '%s'" % link_text for link_text in link_texts))
for link in driver.find_elements_by_xpath(expression):
link.click()
或者,你可以在一个循环处理NoSuchElementException
exception发出find_element_by_link_text()
(如果一个元素不发现)正确:
from selenium.common.exceptions import NoSuchElementException
link_texts = ["Head", "Feet", "Hand", "Fingers"]
for link_text in link_texts:
try:
link = driver.find_element_by_link_text(link_text)
link.click()
except NoSuchElementException:
print("Link text '%s' not found" % link_text)
后一种选择会比较慢,但是在同一时间更加明确。
第二个建议结果为“NameError:name'NoSuchElementException'未定义”...我明天想到第一个,我不能让它工作..谢谢队友 –
@CuriousCat是的,你需要导入它,添加到答案。希望有所帮助。 – alecxe
第二部作品,谢谢alecxe,第一部完全没有做过.. –