首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PermissionError:[Errno 1]在iOS上使用硒和Pythonista的操作是不允许的

PermissionError:[Errno 1]在iOS上使用硒和Pythonista的操作是不允许的
EN

Stack Overflow用户
提问于 2018-05-09 19:52:12
回答 1查看 2.9K关注 0票数 1

我想要创建一个可以控制网页浏览器的pythonista程序。我知道Selenium是最好的,但是我已经在pythonista上为我的iOS iPhone尝试过了,我得到了一个错误。

这是代码:

代码语言:javascript
复制
from selenium import webdriver

browser = webdriver.Chrome()
browser.get('http://www.yahoo.com')

以下是错误:

代码语言:javascript
复制
PermissionError: [Errno 1] Operation not permitted
Traceback (most recent call last):
  File "/private/var/mobile/Containers/Shared/AppGroup/A2EBDF28-CB6C-4190-8199-7406AA3821A3/Pythonista3/Documents/selen.py", line 3, in <module>
    browser = webdriver.Chrome()
  File "/private/var/mobile/Containers/Shared/AppGroup/A2EBDF28-CB6C-4190-8199-7406AA3821A3/Pythonista3/Documents/site-packages-3/selenium/webdriver/chrome/webdriver.py", line 68, in __init__
    self.service.start()
  File "/private/var/mobile/Containers/Shared/AppGroup/A2EBDF28-CB6C-4190-8199-7406AA3821A3/Pythonista3/Documents/site-packages-3/selenium/webdriver/common/service.py", line 76, in start
    stdin=PIPE)
  File "/var/containers/Bundle/Application/24DD2A57-320E-4E21-9BE2-7C3605830DE0/Pythonista3.app/Frameworks/Py3Kit.framework/pylib/subprocess.py", line 708, in __init__
    restore_signals, start_new_session)
  File "/var/containers/Bundle/Application/24DD2A57-320E-4E21-9BE2-7C3605830DE0/Pythonista3.app/Frameworks/Py3Kit.framework/pylib/subprocess.py", line 1261, in _execute_child
    restore_signals, start_new_session, preexec_fn)
PermissionError: [Errno 1] Operation not permitted
EN

回答 1

Stack Overflow用户

发布于 2018-05-10 08:46:48

这个错误信息..。

代码语言:javascript
复制
PermissionError: [Errno 1] Operation not permitted

...implies表示ChromeDriver无法在初始化新的WebDriver和Web客户端会话时创建所需的新资源(例如日志文件)。

根据讨论Pythonista - Limitations due to iOS,下面是使用Pythonista时的一些限制:

  • 没有用于新进程的叉/执行。影响子进程模块。
  • 由于缺少分叉,没有完全清除进程资源(内存、线程、文件句柄)。
  • 不能访问应用程序目录之外的文件。
  • 没有/dev/null和其他特殊文件。
  • 设备的处理能力有限(与典型的PC/Mac相比)。
  • 过程通常会在一段时间后停止/终止。

一个简单的例子如下:

代码语言:javascript
复制
>>> import subprocess
>>> subprocess.call(["ls", "-l"])
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/private/var/mobile/Containers/Bundle/Application/8C59C68D-71BF-4CBB-90F8-373A1752DEE1/Pythonista.app/pylib/subprocess.py", line 524, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/private/var/mobile/Containers/Bundle/Application/8C59C68D-71BF-4CBB-90F8-373A1752DEE1/Pythonista.app/pylib/subprocess.py", line 711, in __init__
    errread, errwrite)
  File "/private/var/mobile/Containers/Bundle/Application/8C59C68D-71BF-4CBB-90F8-373A1752DEE1/Pythonista.app/pylib/subprocess.py", line 1205, in _execute_child
    self.pid = os.fork()
OSError: [Errno 1] Operation not permitted

你的用法有什么不对

可以有以下两个问题:

  • 调用以下代码行时: browser = webdriver.Chrome() scoped_directory试图在文件系统中创建/修改/访问ChromeDriver。例如,在Windows操作系统上: "chromedriverVersion":"2.35.528161 (5b82f2d2aae0ca24b877009200ced9065a772e73)","userDataDir":userDataDir 可能ChromeDriver无法执行此任务/方法/功能。
  • 同样,当您调用以下代码行时: browser = webdriver.Chrome() 按照selenium.webdriver.chrome.webdriver,ChromeDriver试图按照构造函数在文件系统中创建logfile,如下所示: selenium.webdriver.chrome.webdriver.WebDriver(executable_path='chromedriver',port=0,options=None,service_args=None,desired_capabilities=None,service_log_path=None,chrome_options=None类) 可能ChromeDriver无法执行此任务/方法/功能,

由于上述原因,您将看到以下错误:

代码语言:javascript
复制
PermissionError: [Errno 1] Operation not permitted

解决方案

对于上述任何一种情况,解决方案将是仅限制应用程序目录中资源的访问/创建。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50261057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档