我想用硒和铬测试多个移动用户代理.我正在使用python 3.6并部署到heroku.基于http://chromedriver.chromium.org/mobile-emulation.
您可以在以下位置下载用于Windows和heroku的项目:
https://github.com/kc1/mobiletest
Run Code Online (Sandbox Code Playgroud)
(请记住,如果部署到heroku,则必须将FLASK_CONFIG设置为生产.另请注意,项目中的代码与此问题略有不同,因为我过去一周一直在使用代码.)
我有:
def some_long_calculation():
driver = create_chromedriver('kkk')
# driver = create_chromedriver()
driver.get("https://www.yahoo.com/")
.....
Run Code Online (Sandbox Code Playgroud)
并且:
def create_chromedriver(ua=False):
options = webdriver.ChromeOptions()
CHROMEDRIVER_PATH = os.getenv('$HOME') or basedir+'/chromedriver.exe'
FLASK_CONFIG = os.getenv('FLASK_CONFIG')
if ua:
mobile_emulation = {"deviceName": "Nexus 5"}
options.add_experimental_option("mobileEmulation", mobile_emulation)
if FLASK_CONFIG and FLASK_CONFIG == "production":
CHROMEDRIVER_PATH = '/app/.chromedriver/bin/chromedriver'
GOOGLE_CHROME_SHIM = os.getenv('$GOOGLE_CHROME_SHIM') or 'no path found'
options.binary_location = '/app/.apt/usr/bin/google-chrome-stable'
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
return webdriver.Chrome(executable_path=CHROMEDRIVER_PATH, options=options)
Run Code Online (Sandbox Code Playgroud)
如果我在启用移动浏览器的情况下在本地运行它按预期工作:
如果我在启用了移动浏览器的情况下在heroku上运行它:
然后我在heroku上尝试了移动用户,我得到了:
所以至少我知道设置工作就像chrome和chromedriver一样.
heroku日志:
2018-07-15T17:37:53.967643+00:00 app[web.1]: driver = create_chromedriver('kkk')
2018-07-15T17:37:53.967637+00:00 app[web.1]: png = …Run Code Online (Sandbox Code Playgroud) python selenium heroku selenium-chromedriver selenium-webdriver