首页 > 解决方案 > Selenium 在 AWS-batch 上失败

问题描述

我正在运行一个实现 selenium 和 geckodriver 以登录网站帐户的 python 脚本。该代码在容器中本地运行没有问题,但是当我将它部署到 AWS-batch 时,它停止可靠运行。

我每天早上在预定的时间运行这项工作,它工作了几天,但大多数情况下它会失败。当我到达这段代码时发生错误:

driver.find_element_by_class_name(submit_button_name).click()

wait = WebDriverWait(driver, 600)

wait.until(lambda driver: driver.current_url != login_url)

在它达到等待条件后,它只是等待,直到时间用完并且作业失败。我检查了 geckodriver 日志,并且在提交登录详细信息后重定向从未发生,它只是与登录详细信息保持在同一页面上。

代码本身似乎工作正常,将其部署到导致问题的 aws-batch

我努力了:

在将 selenium 测试部署到 ec2 实例时,我可能会遗漏什么吗?我是否需要提供特定资源来运行这些测试?是什么导致这项工作有时成功而不是其他?

标签: amazon-web-servicesseleniumselenium-webdrivergeckodriveraws-batch

解决方案


根据您的描述,测试与登录部分有关,虽然它在本地运行良好但在 AWS Batch 上失败,所以我认为资源(EC2 实例)具有正确角色的潜在根本原因,所以它可以在不被页面(防火墙)阻止的情况下执行吗?因为有时网站防火墙会检测是否有机器人浏览页面(来自geckodriver、chromedriver等),所以它会缓存页面或阻止容器执行。因此,请确保您的 EC2 实例(IAM 角色)具有正确的角色,并尝试检查防火墙是否有任何东西可以阻止您的容器正常运行?


推荐阅读