最近在学习python,在使用selenium做自动化时候遇上各种坑,有很多是自己不小心弄出来的,下面记录下自己学习中遇上的坑:
用pip安装selenium时候一直报错,提示没有权限,即使我用了sudo也依然安装失败
后来找了下原因发现因为 Mac OS X 10.11后默认开启了 SIP(System Integrity Protection)功能,一些系统文件就算使用「sudo」大法也无法搞定,比如安装 IPython,selenium,在 SIP “保护”下都不能完美安装使用。
解决方法是:
重启电脑,按住 Command + R 键,进入恢复模式的操作面板,然后打开 实用工具-「终端」,输入:
csrutil disable
再次重启电脑,正常进入,在终端输入:
csrutil status
会发现SIP 功能就关闭了
这时候就在重新安装:
sudo pip install selenium
OK,完全没问题了
由于安装成功后本人十分高兴,迫不及待上网找了一下selenium的基本实用方法来测试,因为自己的mac机只有safari浏览器就写一下代码:
from selenium import webdriver
class test():
def __init__(self):
self._browser = webdriver.Safari()
self._browser.get("http://www.baidu.com")
def get_title(self):
print self._browser.title
self._browser.quit() #最开始没写这句,以为不会有影响导致我跌进下面的坑
t = test()
t.get_title()
运行会提示 :
selenium.common.exceptions.WebDriverException: Message: Could not create a session: You must enable the 'Allow Remote Automation' option in Safari's Develop menu to control Safari via WebDriver.
这是需要我们开启safari浏览器的远程自动化功能:
第一次会运行完全没问题,但是当你重新运行的时候,如果你没写
self._browser.quit()或self._browser.close()就会出现下面的错误:
selenium.common.exceptions.WebDriverException: Message: Service /usr/bin/safaridriver unexpectedly exited. Status code was: 1
无论我关闭浏览器还是重启都提示这个错,实在让人抓鸡,最后通过活动监视器查看发现:
杀掉这两个 代码中加回
self._browser.quit()就解决了
特此记录下自己学习过程中遇到的问题