【问题标题】:How to run Selenium in Aegis Blade如何在Aegis刀片中运行硒
【发布时间】:2020-02-09 11:54:25
【问题描述】:

我正在尝试在 Aegis Blade 上使用 Firefox 运行一个简单的 selenium 任务。不过我遇到了一些错误。

我设置了我的 api 密钥:

$ export AEGISBLADE_API_KEY="my-api-key"

然后运行这段代码:

from aegisblade import aegisblade
from selenium import webdriver

def gethtml(url):
    driver = webdriver.Firefox()
    driver.get(url)

    return driver.page_source


if __name__ == '__main__':
    print("Running AegisBlade job")
    job = aegisblade.run(lambda: gethtml("https://github.com"))

    print("Waiting for job to finish...")
    print(job.get_return_value())

我收到以下错误:

Internal Error Type: WebDriverException
Internal Error: Message: 'geckodriver' executable needs to be in PATH.

我使用的是 Python 2.7,但看起来这不是问题所在。

【问题讨论】:

    标签: python python-2.7 selenium selenium-webdriver


    【解决方案1】:

    AegisBlade 将自动检测您的 pip 依赖项(在本例中为 selenium),但对于在包管理器之外定义的依赖项没有相同的功能。

    简而言之,您必须请求 AegisBlade 在您的作业运行期间使 Web 驱动程序的依赖项可用。

    There is a selenium example on Github.

    这是您的代码,稍作改动,以便可以正常工作:

    from aegisblade import aegisblade, JobConfig, Capability
    from selenium import webdriver
    
    def gethtml(url):
        driver = webdriver.Firefox()
        driver.get(url)
    
        return driver.page_source
    
    
    if __name__ == '__main__':
        print("Running AegisBlade job")
        config = JobConfig().with_capability(Capability.firefox)
        job = aegisblade.run(lambda: gethtml("https://github.com"), config)
    
        print("Waiting for job to finish...")
        print(job.get_return_value())
    

    附:感谢您引起我的注意。 I responded to you on Github with a little more depth.

    【讨论】:

      猜你喜欢
      • 2021-02-24
      • 2016-05-31
      • 2023-01-13
      • 2016-03-18
      • 2016-12-18
      • 2021-05-11
      • 1970-01-01
      • 2016-11-07
      • 1970-01-01
      相关资源
      最近更新 更多