Selenium Webdriver - 尝试在不建立连接的情况下运行命令

时间:2017-05-19 12:34:16

标签: python-3.x selenium

我是selenium webdriver的新手。 我写了一个单元测试脚本并在2台不同的Windows 10机器上运行它。 在第一台机器上,代码运行没有任何错误。 当我在第二台机器上运行代码时,代码被执行,我可以看到所有测试都通过了,但我仍然收到以下错误: “试图在没有建立连接的情况下运行命令”

这是什么原因,我该如何解决这个问题? THX

1 个答案:

答案 0 :(得分:0)

我可以在针线盒外自由说话吗?对于Selenium,我建议使用Linux(因为您可以crontab -e使用以下脚本),Google Chrome和chromedriver。它非常好用,特别是如果您要测量加载时间。 PhantomJS有时会关闭,并且不会进一步开发IIRC。这是我未经测试的示例:

# -*- coding: utf-8 -*-

import datetime
import os
# from pushbullet import Pushbullet
import pytz
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# api_key = '<BLAHBLAHBLAH>'
# pb = Pushbullet(api_key)

d = pytz.timezone('Europe/Berlin').localize(datetime.datetime.now().replace(microsecond=0)).isoformat()
ok = True
ttfb = -1

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.binary_location = r'<PATH_TO_CHROME>'
webdriver = webdriver.Chrome(executable_path=r'<PATH_TO_CHROMEDRIVER>', chrome_options=chrome_options)

try:
    webdriver.get('https://www.example.com/')
    print(webdriver.execute_script('return performance'))
    ttfb = webdriver.execute_script('return (performance.timing.responseStart - performance.timing.navigationStart)')
    assert 'Example' in webdriver.find_element_by_css_selector("BODY").text
except (KeyboardInterrupt, MemoryError, SyntaxError, SystemExit):
    raise
except Exception as e:
    ok = False
    # push = pb.push_note('Something went wrong.', '<BLAHBLAH>' + '\n\Date: ' + d, channel=pb.get_channel('channel-has-to-be-created'))

try:
    webdriver.quit()
except (KeyboardInterrupt, MemoryError, SyntaxError, SystemExit):
    raise
except Exception as e:
    pass

print(d)
print(ok)
print(ttfb)

如果不清楚,请询问。这是否能帮助您解决Windows问题取决于您,但是也许您和其他人可以比较他们的代码并得出新的结论。玩得开心。