Python 类型错误:+;的操作数类型不受支持:';WebElement';和';WebElement';硒
我试图导出一个excel电子表格,但它给我带来了问题,我试图做的是将信息存储在数据库中。有什么建议吗? 我在这里引用了大量的参考资料,类似这样 Main.pyPython 类型错误:+;的操作数类型不受支持:';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
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元素引用:元素未附加到页面文档==>这可能有助于您理解错误: