当前位置: 首页 > 知识库问答 >
问题:

错误有时会发生,有时发生在不同的地方

孙自怡
2023-03-14

下面的错误会不时弹出,但并不总是在同一个地方。不太清楚为什么。有线索吗?这里的完整代码:完整代码

文件“/users/davidkasapchuk/pycharmprojects/test/homedepotfridges.py”,第257行,在price=item.find_element_by_class_name('product-display-price')文件“/library/frameworks/python.framework/versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webelement.py”,第264行,在find_element_by_class_name返回driver/remote/webelement.py“,第478行,在find_element{”using“:by,”value“:value})['value']文件”/library/frameworks/python.framework/versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webelement.py“,第461行,在_execute返回self._parent.execute(命令,params)文件”frameworks/python.framework/versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py“,第192行,在check_response中引发exception_class(message,screen,stacktrace)selenium.common.exceptions.nosuchelementexception:message:{”errormessage“:”无法找到类名为'product-display-price'的元素“,”request“:{”headers“:{”accept“:”application/json“,”-urllib/3.5“},”httpversion“:”1.1“,”方法“:”post“,”post“:”{\\ID\“:\\:WDC:1473895291967\”,“using\”:\“类名\”,“sessionid\”“:”/element“、”端口“:”“、”主机“:”、“密码”:“、”用户“:”、“用户信息”:“、”授权“:”、“协议”:“、”源“:”/element“、”查询键“:{}、”块“:[”element“]}、”urlorig“Inal“:”/Session/EB417D30-7AD1-11E6-82C2-D52D6CD5B804/Element/:WDC:1473895291967/Element“}}截图:可通过屏幕获得

在处理上述异常的过程中,发生了另一个异常:

Traceback(最近调用为last):文件“/users/user/pycharmprojects/test/homedepotfridges.py”,第266行,在模型='n/a'中。text attributeerror:'str'object没有属性'text'>

import csv
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import time

b = open('csv/homedepotfridges.csv', 'w', newline='')
a = csv.writer(b,delimiter=',')

driver = webdriver.PhantomJS()
driver.get('https://www.homedepot.ca/en/home/categories/appliances/refrigerators-and-freezers/refrigerators.html')
time.sleep(15)
items = []

for item in driver.find_elements_by_class_name('item'):
    try:
        model = item.find_element_by_class_name('product-model')
        price = item.find_element_by_class_name('product-display-price')
        title = item.find_element_by_class_name('product-title')
        url = item.find_element_by_class_name('js-detail-link')

        items.append({'model': model, 'price': price, 'title': title, 'url': url})
        print (model.text, price.text, title.text, url.get_attribute("href"))
        c = (model.text, price.text, title.text, url.get_attribute("href"))
        a.writerow(c)
   except NoSuchElementException:
    model = 'n/a'.text
    price = 'N/A'.text
    title = 'N/A'.text
    url = 'N/A'.text
    items.append({'model': model, 'price': price, 'title': title, 'url': url})
    print(model.text, price.text, title.text, url.get_attribute.text("href"))
    c = (model.text, price.text, title.text, url.get_attribute("href"))
    a.writerow(c)
b.close()

b = open('csv/homedepotfridges.csv', 'a', newline='')
a = csv.writer(b,delimiter=',')

driver = webdriver.PhantomJS()
driver.get('https://www.homedepot.ca/en/home/categories/appliances/refrigerators-and-freezers/refrigerators.html#!p=1&q=*%3Arelevance%3AcategoryPathHierarchy%3A3%2Fhd-classes%2Fl1-appliances%2Fl2-refrigerators-freezers%2F1010215')
time.sleep(15)
items = []

for item in driver.find_elements_by_class_name('item'):
    try:
        model = item.find_element_by_class_name('product-model')
        price = item.find_element_by_class_name('product-display-price')
        title = item.find_element_by_class_name('product-title')
        url = item.find_element_by_class_name('js-detail-link')

        items.append({'model': model, 'price': price, 'title': title, 'url': url})
        print (model.text, price.text, title.text, url.get_attribute("href"))
        c = (model.text, price.text, title.text, url.get_attribute("href"))
        a.writerow(c)
     except NoSuchElementException:
        model = 'n/a'.text
        price = 'N/A'.text
        title = 'N/A'.text
        url = 'N/A'.text
        items.append({'model': model, 'price': price, 'title': title, 'url': url})
        print(model.text, price.text, title.text, url.get_attribute.text("href"))
        c = (model.text, price.text, title.text, url.get_attribute("href"))
        a.writerow(c)
b.close()

共有1个答案

王磊
2023-03-14

在对元素执行操作之前,您可能应该使用某种等待来等待元素加载。可以解决你的问题。

 类似资料:
  • 我在yarn cluster上运行的spark应用程序崩溃了,我正在试图确定根本原因。在我使用从yarn获得的日志中,我看到在块获取期间有一大堆连接被拒绝,还有一个内存不足错误。很难说出根本原因是什么。我的问题是当容器因为OutOfMemory异常而被杀死时会发生什么。因此,在容器日志中,我看到这是如何在容器上启动执行器的 我还看到许多。在应用程序崩溃之前,似乎有多个这样的问题。spark重试一个

  • 问题内容: 我试图学习Java泛型,并发现以下代码。 哪个没有问题。 但是,当我将方法更改为以下内容时,它给了我编译错误。 错误: 谁能帮助我了解错误? 问题答案: 您应该了解的第一件事是,使用以下方法签名 双方 必须 是同一类型,也就是既和将具有相同infered类型。 那么,为什么它的工作和?因为这两个参数实际上可以表示为,这是最近的公用超类型和: 实现接口。 可以装进一个盒子,也可以。 因此

  • 无法生成pdf下载获取Android.os.fileuriexposedexception错误:file:///storage/emulated/0/download/inv-0002.pdf通过intent.getdata()超出应用程序公开

  • 问题内容: 想象以下Perl代码(此处为伪代码): 在这种情况下,由于Perl脚本在第2行结束,因此我不会释放该锁。在这种情况下,操作系统是否曾经释放过该锁?它是否看到“嘿,获取锁的脚本崩溃了”并释放了锁?它会立即释放锁吗?另外,是否为每个脚本运行一个Perl实例,以便清楚地知道哪个脚本崩溃/停止而不释放锁? 问题答案: 在那种情况下,操作系统是否释放过该锁? 它是否看到“嘿,获取锁的脚本崩溃了”

  • 我是拉威尔的新手,所以你可能不得不忍受我,但我似乎有个小问题。现在,首先,我创建了一个基本模板,并使用phpMyAdmin和Wamp成功地运行了它,它运行得很好。我还得到了一个老项目,我被要求看一看,但由于某种原因,我无法让它运行。 这就是我正在使用的过程: 1:打开cmd更改到正确的目录 2:安装编写器 3:将目录更改为项目目录 4:运行 错误: PHP警告:需要(C:\wamp64\www\p

  • 我不知道该怎么办!感谢任何帮助! 另外,我是否应该在安装HBase之前配置Zookeeper?我的教程没有这么说。