【发布时间】:2020-11-06 19:30:22
【问题描述】:
这是我在 Stack Overflow 上的第一篇文章。我一直在浏览和搜索关于这个问题的所有可能答案,我想此时我应该问一个问题,因为我已经在这堵墙上好几天了。我目前正在使用 Python 中的 Selenium 进行网络抓取项目。我已经抓取了一个网站,目前正在第二个网站上,我遇到了一个看似棘手的问题。以下代码在https://www.spd.de/standpunkte/ 页面上运行良好,没有错误:
try:
driver.find_element_by_link_text("Familien").click()
except NoSuchElementException:
WebDriverWait(driver, 12).until("Familien").click()
同时,以下代码在页面https://www.spd.de/standpunkte/familie/ 上抛出错误TypeError: 'str' object is not callable:
try:
driver.find_element_by_link_text("Mehr erfahren").click()
except NoSuchElementException:
WebDriverWait(driver, 12).until("Mehr erfahren").click()
错误发生在WebDriverWait(driver, 12).until("Mehr erfahren").click() 行。根据我到目前为止的研究,我认为具体问题是该行中的某些内容被解释为str 对象,因此无法调用。在我看来,有两个问题:
-
我看不出有任何原因导致此行产生错误,而顶部的代码抓取同一个网站但在不同的页面上运行没有问题。我检查并确保页面上没有被点击的隐藏元素。
-
我不知道该行中的什么被视为
str对象。全线?只有一部分?如果有,是哪一部分?加剧这一点的是,我无法真正打破界限以查看有关它的任何信息。print(WebDriverWait(driver, 12).until("Mehr erfahren").click())和print(type(WebDriverWait(driver, 12).until("Mehr erfahren").click()))最终都会给出错误。我能够确定.click()方法不是问题,因为我尝试将行设置为等于变量,然后与变量交互,但这仍然在与以前相同的行上产生错误;它甚至从未与.click()方法达成一致。
有什么方法可以确定该行的哪一部分被解释为str?或者这根本就是问题所在?
这让我发疯了,非常感谢您的帮助!
【问题讨论】:
标签: python selenium webdriverwait expected-condition linktext