- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在pycharm中写了一个python程序,包括FBCrawl.py、html_login.py、common/glovar.py,在glovar.py中定义了一个变量webdriver_browser,想在FBCrawl.py和html_login.py中使用这个webdriver_browser ,主要目的是登录facebook并获取页面内容,使用selenium,程序如下,但是运行时,错误:
C:\Python\Python36\python.exe C:/Python/PyCharmProject/FaceBookCrawl/FBCrawl.py
None
Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.chrome.service.Service object at 0x00000146BF1FD438>>
Traceback (most recent call last):
File "C:\Python\Python36\lib\site-packages\selenium\webdriver\common\service.py", line 173, in __del__
File "C:\Python\Python36\lib\site-packages\selenium\webdriver\common\service.py", line 149, in stop
File "C:\Python\Python36\lib\site-packages\selenium\webdriver\common\service.py", line 120, in send_remote_shutdown_command
ImportError: sys.meta_path is None, Python is likely shutting down
Process finished with exit code 0
程序在这里:
FBCrwal.py:
from common import glovar
from html_login import HtmlLogin
from selenium import webdriver
if __name__ == '__main__':
baseurl = "http://www.google.com"
#log in the website
login_url = "https://www.facebook.com/login.php?login_attempt=1&lwv=110"
HtmlLogin().login(login_url)
html_cont = glovar.webdriver_browser.get("https://www.facebook.com/alexis.n.griffith.3")
print(html_cont)
html_login.py:
from selenium import webdriver
from common import glovar
class HtmlLogin(object):
def login(self,url):
if url is None:
return
login_url = url
glovar.webdriver_browser = webdriver.Chrome()
glovar.webdriver_browser.get(login_url)
#user credentials
user = glovar.webdriver_browser.find_element_by_css_selector("#email")
user.send_keys('********@gmail.com')
password = glovar.webdriver_browser.find_element_by_css_selector("#pass")
password.send_keys('********')
login = glovar.webdriver_browser.find_element_by_css_selector("#loginbutton")
login.click()
glovar.py:
webdriver_browser = None
请问是什么原因以及如何解决
最佳答案
如果您使用多线程来运行后台任务并且主程序线程结束,则可能会出现该错误。那时 Python 解释器将开始被销毁,但如果守护线程中的后台任务仍在运行并且正在以 C 代码运行,它仍然可以运行。
这会导致问题,因为解释器正在被销毁。这种情况的一个症状就是您所看到的,因为当销毁解释器时,模块中的任何对象查找开始返回 None
,因为模块的内容已被清除。这正在被检测到,您会收到该错误。
如何解决这种情况实际上取决于代码在做什么。一种方法可能是识别后台任务并等待它完成,如果线程会无限期地运行,可能会使用某种方式来发出线程应该停止的信号。
深入研究 selenium 代码的另一个原因可能是一个更好的解释,其中 __del__
() 方法被添加到对象中以完成工作,并且当对象在解释器上被销毁时调用这些方法关闭。如果您跟踪 selenium 代码,它们来自 __del__()
方法,执行模块的惰性导入。因为当解释器被销毁时 __del__()
被调用,模块已经被清除并失败。
如果是这种情况,您唯一可以做的就是在退出程序之前从您的代码中明确停止 selenium 驱动程序。这样您就可以在解释器被销毁之前完成它。
这个问题你真的应该问 selenium 的人,或者看看文档看看你是否错误地使用了 API。也就是说,像 selenium 代码那样在 __del__
() 方法中做事情是不好的做法。只要他们继续这样做,就很难阻止它,除非您只是错误地使用了他们的 API。
关于python 错误 :ImportError: sys. meta_path is None, Python is likely shutdown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41206947/
这个问题在这里已经有了答案: Why does the print function return None? (1 个回答) 关闭 6 年前。 我正在学习理解。我得到了 print(x) 部分(我
我以为我理解了 Python 中的这两个单例值,直到我看到有人在代码中使用 return l1 or l2,其中 l1 和 l2 都是链表对象,并且(s)他想如果不为 None 则返回 l1,否则返回
我希望在 IPython Notebook 中使用列表理解生成枚举字符串列表。它有效,但给了我一个我不理解的奇怪输出。 cols = [] [cols.append('Value'+str(hour)
这个问题在这里已经有了答案: Why does the expression 0 >> import dis >>> def a(): ... return None is None is N
《Learning Python 5th》第608页有示例代码: >>> list(print(x.upper(), end=' ') for x in 'spam') S P A M [None,
我对此进行了搜索并遇到了列表返回函数,但我仍然不明白。 我试图理解为什么 Print 函数到另一个函数返回以下内容: 生日快乐 生日快乐 无 无 我的代码: def happy(): prin
除非我疯了 if None not in x 和 if not None in x 是等价的。有首选版本吗?我想 None not in 更像英语,因此更像 pythonic,但 not None i
尝试绘制 k-NN 分类器的决策边界但无法这样做得到 TypeError: '(slice(None, None, None), 0)' is an invalid key h = .01 # st
我正在尝试将可变大小的序列输入 LSTM。因此我使用生成器且批量大小为 1。 我有一个嵌入的 (sequence_length,)-input-tensor,并输出 (batch_size,equen
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Is there any way to know if the value of an argument i
我正在尝试根据环境变量的返回值进行条件赋值。 self._TBLFilePath = iTBLFilePath or os.environ.get("CDO_TBLPATH") + os.enviro
我正在使用 marshmallow 2.0.0rc2 验证 HTTP 请求的输入数据,并在 HTTP 响应上将 SQLAlchemy 模型加载到 JSON。我偶然发现了两个问题: 首先,在通过 HTT
我想将我设置为 None 的变量与 is 进行比较,但它失败了。 当我使用 == 将此变量与 None 进行比较时,它起作用了。 这就是我所说的变量: print type(xml.a) -> 因为
我最近遇到了这种语法,我不知道有什么区别。 如果有人能告诉我其中的区别,我将不胜感激。 最佳答案 答案解释here . 引用: A class is free to implement compari
尝试使用 BorutaPy 进行特征选择。但出现 TypeError: '(slice(None, None, None), array([0, 1, 2, 3, 4]))' 是无效键。 from s
我见过使用 [] 的代码片段, [None] , None或 ()作为 placeholder 的形状, 那是 x = tf.placeholder(..., shape=[], ...) y = t
是否有逻辑推理可以解释为什么下面的 Ansible playbook 中的两个 debug 任务分别输出 "NONE" 和 "FALSE"并且不是两者都“NONE”? - hosts: 'all'
我有一个函数,它可以返回两个整数的元组或(None, None)的元组: (出于本问题的目的,我们假设此返回格式是执行此操作的唯一方法,并且无法更改) from typing import Tuple
问题: 如何遍历字典并从中删除 None 键或值? 这是我尝试过的: 代码: import copy def _ignore(data): copied_data = copy.deepcop
什么是简洁的 python 表达方式 if : # do a bunch of stuff once 最佳答案 为什么不简单, None not in lst 关于python - 简明地说 "
我是一名优秀的程序员,十分优秀!