因此,我有一个 Raspberry Pi 3B + ,它具有 Python版本3.5.3 和一些Python脚本。首先是管理网址的Flask服务器。第二个必须在文件夹名称“ templates”中收集每个html文档的名称,并使用由“ localhost:8000 / the_client_name / the_doc_name”创建的URL打开 Firefox ESR 浏览器(在全屏模式下)。 。然后,它会等待几秒钟,并在同一选项卡中打开下一个URL。树莓派将通过HDMI连接到电视,并将复制带有信息,建议和类似内容的html文档。问题在于最后一个脚本使用了 Selenium ,而我无法使其正常工作。
同时粘贴两个罪行:
这是烧瓶服务器。我首先运行它并使其正常工作:
from flask import Flask
from flask import render_template
app = Flask(__name__)
@app.route('/<emp>/<temp>')
def index(emp, temp):
return render_template(temp, name=emp)
if __name__ == '__main__':
app.run(debug= True, port=8000)
第二个是硒,它不起作用:
import os
from time import sleep
from selenium import webdriver
if __name__ == '__main__':
docs = [doc.name for doc in os.scandir(path='./templates') if doc.is_file() and doc.name.endswith('.html')]
emp = 'BUSSINES NAME'
driver = webdriver.Firefox()
driver.fullscreen_window()
for doc in docs:
driver.get('localhost:8000/{}/{}'.format(emp, doc))
sleep(10)
我尝试了这些:
apt-get install firefox-esr
pip3 install selenium
它安装了硒版本3.141.0。
然后我从https://github.com/mozilla/geckodriver/releases下载了32位的firefox驱动程序的最新版本(v0.24.0):geckodriver-v0.24.0-linux32.tar.gz。我将其解压缩,并使用命令sudo cp geckodriver /usr/bin/
将geckodriver文件放入Python3路径。当我尝试运行Selenium脚本时,出现以下错误:OSError: [Errno 8] Exec format error
然后,经过一番研究,我尝试安装一些东西:
sudo apt-get install xvfb
sudo pip install PyVirtualDisplay
sudo pip install xvfbwrapper
我运行此密码只是为了尝试:
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(1024, 768))
display.start()
driver = webdriver.Firefox()
driver.get('http://raspberrypi.stackexchange.com/')
driver.quit()
display.stop()
但是我遇到了相同的错误:OSError: [Errno 8] Exec format error
我删除了xvfb并卸载了PyVirtualDisplay和xvfbwrapper。
试图使用其他浏览器管理问题。由于 Chromiun 已在Raspbian中安装,因此我尝试了一下,但无法找到Webdriver。
最后,我改变了策略。我使用webbrowser编写了一个脚本,由于它似乎在不同的选项卡或窗口中打开URL(我尝试使用Chromiun和Firefox,却从未在同一选项卡中打开URL),所以我安装了一个窗口控制器:{{1 }}。
这是脚本:
sudo apt-get wmctrl
它奏效了,我的意思是,它做得很差。在上一个窗口浏览器中打开一个URL,然后在上一个窗口关闭后在另一个新窗口中打开下一个URL。问题是您必须手动设置全屏模式,然后import os
import time
import webbrowser
if __name__ == '__main__':
docs = [doc.name for doc in os.scandir(path='./templates') if doc.is_file() and doc.name.endswith('.html')]
emp = 'BUSSINES NAME'
firefox = webbrowser.get('firefox')
i = 0
for doc in docs:
print(doc)
firefox.open('localhost:8000/{}/{}'.format(emp, doc), new=0)
time.sleep(6)
if i != 0:
os.system('wmctrl -c Mozilla Firefox')
i += 1
将无法再关闭窗口。所以实际上它没有用。
我不知道该怎么办。我想使用硒,因为它非常适合proyecto。任何人都知道如何使用受支持的浏览器之一使其在raspberry pi 3B +中工作。
注意: Raspbian GNU / Linux 9.8(拉伸) 注意2:这个问题与之前提出的问题有所不同,因为它与Raspberry Pi有关,不是MAC OS
答案 0 :(得分:2)
OSError: [Errno 8] Exec format error
和geckodriver-v0.24.0-linux32.tar.gz
您要运行的二进制文件用于i386(32位Intel),而RPi具有ARM CPU。如果可以,请尝试geckodriver-v0.23.0-arm7hf.tar.gz,否则可能需要从源代码进行构建。