【问题标题】:Using selenium at hosted app?在托管应用程序中使用硒?
【发布时间】:2015-08-24 00:37:47
【问题描述】:

我想在 DigitalOcean 上托管的 Django 应用中单击一个按钮。

这是我离线的方法:

import selenium.webdriver as webdriver

firefox = webdriver.Firefox()
firefox.get("http://www.hltv.org/match/2296366-gplay-gamers2-acer-predator-masters-powered-by-intel")

element = firefox.find_element_by_id("voteteam1")
element.click()

但是我可以在线使用它吗?也许还有其他解决方案?

【问题讨论】:

  • 当你说“你想在网上做”时,你到底是什么意思?
  • 在我托管的 Django 应用中。我很困惑,因为使用离线它会打开 Firefox。但是这种情况在网上怎么处理呢?

标签: python django selenium selenium-webdriver


【解决方案1】:

您需要在 Linux 机器上将 firefox 用作 headless。以下文章应该会有所帮助 -

http://www.installationpage.com/selenium/how-to-run-selenium-headless-firefox-in-ubuntu/

【讨论】:

    【解决方案2】:

    如果您“带头”绑定到 Firefox 或任何其他浏览器,常见的方法是在 PyVirtualDisplay 的帮助下启动一个 “虚拟显示”,它是 @ 的包装器987654328@、Xephyr 和 Xvnc,请参阅此答案以获取 example working code。


    另一种选择是使用“无头”浏览器,例如PhantomJS。在这种情况下,更改通常很简单,替换:

    firefox = webdriver.Firefox()
    

    与:

    driver = webdriver.PhantomJS()
    

    假设您安装了PhantomJS。

    演示:

    >>> from selenium import webdriver
    >>> driver = webdriver.PhantomJS()
    >>> driver.get("http://www.hltv.org/match/2296366-gplay-gamers2-acer-predator-masters-powered-by-intel")
    >>> driver.title
    u'HLTV.org - Hot Match: GPlay vs Gamers2'
    

    第三种选择(我最喜欢的)是使用远程 selenium 服务器,可以是您自己的,也可以由第三方服务提供,例如 BrowserStack 或 Sauce Labs。 Example code:

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    
    desired_cap = {'os': 'Windows', 'os_version': 'xp', 'browser': 'IE', 'browser_version': '7.0' }
    
    driver = webdriver.Remote(
        command_executor='http://username: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("BrowerStack")
    elem.submit()
    print driver.title
    driver.quit()
    

    对于BrowserStack 或Sauce Labs,您有大量的浏览器和操作系统可供选择。请注意,这些不是免费服务,您需要 username 和 key 才能使此代码生效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-10
      • 2020-12-15
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      • 2010-10-31
      相关资源
      最近更新 更多