BrowserStack脚本失败,并显示MaxRetryError

时间:2019-05-26 16:02:52

标签: python selenium proxy browserstack

https://www.browserstack.com/automate/python中的脚本

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

desired_cap = {
    'browser': 'Chrome',
    'browser_version': '62.0',
    'os': 'Windows',
    'os_version': '10',
    'resolution': '1024x768',
    'name': 'Bstack-[Python] Sample Test'
}

driver = webdriver.Remote(
    command_executor='http://servinc1:key@hub.browserstack.com:80/wd/hub',
    desired_capabilities=desired_cap)

driver.get("http://www.google.com")
if not "Google" in driver.title:
    raise Exception("Unable to load google page!")
elem = driver.find_element_by_name("q")
elem.send_keys("BrowserStack")
elem.submit()
print driver.title
driver.quit()

失败

  

urllib3.exceptions.MaxRetryError:HTTPConnectionPool(host ='hub.browserstack.com',port = 80):URL超过了最大重试次数:/ wd / hub / session(由NewConnectionError(':导致无法建立新的连接:[Errno 111]连接被拒绝',))

在具有localhost HTTP代理的系统上

。代理配置了{http,https}_proxy个环境变量:使用请求有效:

import requests
r = requests.get('https://api.github.com/events')

并允许连接到hub.browserstack.com也可以。

目标是将BrowserStack与本地代理一起使用。该如何解决?

2 个答案:

答案 0 :(得分:0)

由于您的用例涉及使用代理将流量发送到BrowserStack Hub,因此您需要在代码段中指定代理详细信息,如下所示-

//Set the appropriate proxy environment variable (HTTP_PROXY if it is a HTTP proxy, HTTPS_PROXY if it is a HTTPS proxy, etc.) before running the tests.
//You can set this as follows:

export HTTP_PROXY='http://<proxyhost>:<proxyport>'

您可以在此处了解更多信息-https://www.browserstack.com/automate/python#proxy

答案 1 :(得分:0)

因此,目前看来,解决方法似乎是答案:允许所有与hub.browserstack.com的连接都通过防火墙。例如

iptables -I OUTPUT 1 -p tcp --dport 443 -d hub.browserstack.com  -j ACCEPT