当前位置: 首页 > 面试题库 >

pythonseleniumwebscraping“ NoSuchElementException”无法识别

公西姚石
2023-03-14
问题内容

有时,我会在页面上寻找可能存在或不存在的元素。我想用/尝试/捕获这种情况,NoSuchElementException当某些HTML元素不存在时,selenium会抛出该异常。原始例外:

NoSuchElementException: Message: u'Unable to locate element: {"method":"css selector","selector":"#one"}' ; Stacktrace: 
    at FirefoxDriver.prototype.findElementInternal_ (file:///var/folders/6q/7xcjtgyj32nfc2yp_y5tr9pm0000gn/T/tmp63Mz2a/extensions/fxdriver@googlecode.com/components/driver_component.js:8899)
    at FirefoxDriver.prototype.findChildElement (file:///var/folders/6q/7xcjtgyj32nfc2yp_y5tr9pm0000gn/T/tmp63Mz2a/extensions/fxdriver@googlecode.com/components/driver_component.js:8911)
    at DelayedCommand.prototype.executeInternal_/h (file:///var/folders/6q/7xcjtgyj32nfc2yp_y5tr9pm0000gn/T/tmp63Mz2a/extensions/fxdriver@googlecode.com/components/command_processor.js:10840)
    at DelayedCommand.prototype.executeInternal_ (file:///var/folders/6q/7xcjtgyj32nfc2yp_y5tr9pm0000gn/T/tmp63Mz2a/extensions/fxdriver@googlecode.com/components/command_processor.js:10845)
    at DelayedCommand.prototype.execute/< (file:///var/folders/6q/7xcjtgyj32nfc2yp_y5tr9pm0000gn/T/tmp63Mz2a/extensions/fxdriver@googlecode.com/components/command_processor.js:10787)

具有讽刺意味的是,它不会让我捕捉到之前抛出的异常吗?代码在这里:

elt = driver.find_element_by_css_selector('.information')
try:
    dat1 = elt.find_element_by_css_selector('#one').text
    dat2 = elt.find_elements_by_css_selector('#two')[1].text
    text = dat1 + dat2
except NoSuchElementException:
    text = elt.find_element_by_css_selector('#all').text
    item.set_description(text)

错误在这里:

NameError: name 'NoSuchElementException' is not defined

谷歌搜索/文档整理一无所获…让我感到奇怪的是,selenium可以引发异常但不能捕获它。


问题答案:

您需要先导入异常

from selenium.common.exceptions import NoSuchElementException

然后你可以参考它

except NoSuchElementException:
    # handle the element not existing


 类似资料:
  • 我有以下代码段: 然而,findbugs说有一种不好的做法: It:Iterator next()方法不能抛出NoSuchElementException(It\u NO\u SUCH\u元素),该类实现java。util。迭代器接口。然而,它的next()方法不能抛出java。util。无接触元素异常。应该更改next()方法,以便在没有更多元素可返回时调用它时抛出NoTouchElementE

  • im 尝试单击此 div 元素,但引发异常。我的代码是: selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{"method":"xpath","selector":"//*[@id='ext-gen1147']"}(会话信息: chrome=80.0.3987.163)

  • 我有以下序列

  • 我不确定这是否是一个与我没有这台计算机的管理权限有关的问题。任何帮助,以便我可以进一步排除故障,将非常感谢! 谢谢

  • 问题内容: 我使用,当我得到 我删除了构建路径,然后又做了 ,仍然是同样的错误。 问题答案: 该代码不是Java SE的一部分,因此这些类将不在JRE中。您需要找到并下载包含这些类的JAR文件,然后将其添加到Eclipse构建路径中。 (可以在此处下载JAR的一个地方,但是如果此链接中断,可以轻松进行自己的搜索。请转到Maven Central或findjar。)

  • 问题内容: 我有一个jimfs(内存文件系统中的Google)从字节数组中创建的zip文件。当尝试使用打开该文件时,出现错误,提示无法识别该提供程序。我的代码如下: URI类似于:。 堆栈跟踪为: jimfs未与一起列出。它位于分别与 for 相比的单独的类加载器中。 提供者的打印如下: 我尝试基于jimfs ClassLoaderTest示例手动设置类加载器,但没有成功。我在Linux上运行。