Python 类型错误:+;的操作数类型不受支持:';WebElement';和';WebElement';硒

Python 类型错误:+;的操作数类型不受支持:';WebElement';和';WebElement';硒,python,selenium,Python,Selenium,我试图导出一个excel电子表格,但它给我带来了问题,我试图做的是将信息存储在数据库中。有什么建议吗? 我在这里引用了大量的参考资料,类似这样 Main.py from selenium import webdriver from selenium.webdriver.common.keys import Keys import csv from selenium.webdriver.support.ui import WebDriverWait import unittest cla

我试图导出一个excel电子表格,但它给我带来了问题,我试图做的是将信息存储在数据库中。有什么建议吗? 我在这里引用了大量的参考资料,类似这样

Main.py

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import csv
from selenium.webdriver.support.ui import WebDriverWait
import unittest





class Test():
    # filename = "list.csv"
    # f = open(filename,"w")
    # headers = "listing name, aval \n"

    # f.write(headers)

    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.get("https://orlando.craigslist.org/search/apa?s=100")
        self.filename = "list.csv"
        self.f = open(self.filename,"w")
        self.headers = "listing name, aval \n"

    def task(self):
        driver = self.driver
        filename = self.filename
        f = self.f
        headers = self.headers
        ln = driver.find_elements_by_xpath('//*[@id="sortable-results"]/ul/li/p/a')
        size = len(driver.find_elements_by_xpath('//*[@id="sortable-results"]/ul/li/p/a'))
        for i in range(0, size):
            ln = driver.find_elements_by_xpath('//*[@id="sortable-results"]/ul/li/p/a')
            ln = ln[i]
            self.getLn(ln)
            ln.click()
            av = driver.find_element_by_xpath('/html/body/section/section/section/div[1]/p[1]/span[3]')
            self.getAv(av)
            back = driver.find_element_by_xpath('/html/body/section/header/nav/ul/li[3]/p/a').click()
            WebDriverWait(driver,3)
            f.write(ln + av + "\n")
            if i == 5:
                f.close()
                break





    def getLn(self,ln):
        driver = self.driver
        ln = ln
        if ln:
            print (ln.text)
        else:
            print ("No listing name")



    def getAv(self,av):
        driver = self.driver
        if av:
            print (av.text)
        else:
            print ("No listing name")


    def initialize():
        return Test

    def teardown(self):
        self.driver.quit()



run = Test()
run.setUp()
tas = run.task()
run.teardown()






if __name__ == '__main__':
    unittest.main()
回溯错误:

  File "main.py", line 41, in task
    f.write(ln + av + "\n")
TypeError: unsupported operand type(s) for +: 'WebElement' and 'WebElement'
编辑,错误

Traceback (most recent call last):
  File "main.py", line 77, in <module>
    tas = run.task()
  File "main.py", line 41, in task
    f.write(ln.text + av.text + "\n")
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webelement.py", line 73, in text
    return self._execute(Command.GET_ELEMENT_TEXT)['value']
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webelement.py", line 491, in _execute
    return self._parent.execute(command, params)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 238, in execute
    self.error_handler.check_response(response)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 193, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
  (Session info: chrome=56.0.2924.87)
  (Driver info: chromedriver=2.27.440174 (e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform=Mac OS X 10.11.2 x86_64)
回溯(最近一次呼叫最后一次):
文件“main.py”,第77行,在
tas=run.task()
任务中第41行的文件“main.py”
f、 写入(ln.text+av.text+“\n”)
文件“/Library/Python/2.7/site packages/selenium/webdriver/remote/webelement.py”,第73行,文本
返回self.\u执行(Command.GET\u元素\u文本)['value']
文件“/Library/Python/2.7/site packages/selenium/webdriver/remote/webelement.py”,第491行,在
返回self.\u parent.execute(命令,参数)
文件“/Library/Python/2.7/site packages/selenium/webdriver/remote/webdriver.py”,执行中的第238行
self.error\u handler.check\u响应(响应)
文件“/Library/Python/2.7/site packages/selenium/webdriver/remote/errorhandler.py”,第193行,在check_响应中
引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.StaleElementReferenceException:消息:stale元素引用:元素未附加到页面文档
(会话信息:chrome=56.0.2924.87)
(驱动程序信息:chromedriver=2.27.440174(E97A722CAFC2D3A8B807EE115BFB307F7D2CFD9),平台=Mac OS X 10.11.2 x8664)

av和ln是WebElement,因此不能将它们连接起来。 我想您需要WebElement中的文本,因此您需要按如下方式访问它:

f.write(ln.text + av.text + "\n")

您得到该错误是因为
ln
av
是WebElements,您无法添加它们

def task(self):
        driver = self.driver
        filename = self.filename
        f = self.f
        headers = self.headers
        ln = driver.find_elements_by_xpath('//*[@id="sortable-results"]/ul/li/p/a')
        size = len(driver.find_elements_by_xpath('//*[@id="sortable-results"]/ul/li/p/a'))
        for i in range(0, size):
            ln = driver.find_elements_by_xpath('//*[@id="sortable-results"]/ul/li/p/a')
            ln = ln[i]
            self.getLn(ln)
            ln.click()
            av = driver.find_element_by_xpath('/html/body/section/section/section/div[1]/p[1]/span[3]')
            self.getAv(av)
            back = driver.find_element_by_xpath('/html/body/section/header/nav/ul/li[3]/p/a').click()
            WebDriverWait(driver,3)
            f.write(ln + av + "\n") ### Adding WebElement's isn't allowed
                f.close()
                break
也许您的目的是连接(连接)页面上元素的文本。在这种情况下,将
f.write(ln+av+“\n”)
更改为
f.write(ln.text+av.text+“\n”)


我希望这能回答你的问题。快乐编码

谢谢你把这些放在一起,但是我在edit@Owl伙计,不要用
.text
,试着用
.get\u attribute(“text”)
.get\u attribute(“textContent”)
。我想出来了,是我放在哪一行的**f.write(ln.text+av.text+“\n”)***@OwlMan,很高兴你的问题解决了。快乐编码!这是真的,但它现在在上面的编辑中显示错误。这是一个新错误和一个新问题,您应该查找错误消息。selenium.common.exceptions.StaleElementReferenceException:消息:stale元素引用:元素未附加到页面文档==>这可能有助于您理解错误: