首页 > 解决方案 > 如何使用 python 代码在 Linux 上运行的 azure 函数应用程序中打开 Web 浏览器

问题描述

我用 python 代码创建了一个 azure 函数应用程序。我的代码将抓取tripadvisor 页面,因此我使用Selenium 打开浏览器并获取tripadvisor 页面的源代码。在我的机器上本地,一切正常,但在天蓝色上,我创建的功能应用程序无法打开网络浏览器。我得到的错误是“geckodriver”可执行文件可能有错误的权限。

我尝试像这样更改权限

但同样的问题再次发生

AppInsightsScraper.my_logger.info('opening browser')
cmd = 'sudo chmod 777 "/home/site/wwwroot/geckodriver"'
AppInsightsScraper.my_logger.info(os.system(cmd))
checkCmd = 'ls -l'
AppInsightsScraper.my_logger.info(os.system(checkCmd))
AppInsightsScraper.my_logger.info('test modif permission')
browser = webdriver.Firefox(executable_path='/home/site/wwwroot/geckodriver')
AppInsightsScraper.my_logger.info('browser opened') 

预期的结果是打开浏览器并继续执行我的代码,但我在 azure 门户“geckodriver”可执行文件上收到权限错误可能有错误的权限。 在此处输入图像描述 我什至无法理解 32512 和 0 在日志信息中的含义

标签: pythonlinuxseleniumwebdriverazure-functions

解决方案


该错误可能意味着 geckodriver 不在路径上,因此它无法执行您希望它执行的操作。我在 Azure 上的一个 Django 应用服务上收到了 Chromedriver 的类似错误,经过数小时在线搜索解决方案后,恐怕我有坏消息要告诉你。

  1. Azure 不允许您安装应用程序运行所需的自定义软件(firefox 用于 geckodriver,chrome 用于 chromedriver 等)
  2. 即使莫名其妙地有可用的 firefox,您也必须为 geckodriver 和 firefox 指定环境变量,这是 azure 上的另一项繁忙任务。

但是,如果您可以部署在其他地方而不是 Azure(Heroku 为我工作),那么还有另一种选择。您可以轻松添加 firefox 二进制文件和 geckodriver buildpack 并设置路径变量,它会像魅力一样运行。检查教程是否相同,希望对您有所帮助。


推荐阅读