0

我一直堅持這個錯誤"Caused by: java.lang.IllegalStateException: The driver is not executable: /var/task/chromedriver" 當我將我的jar項目部署到aws lambda函數。該項目在我的本地機器上正常工作,但似乎由於某種原因,aws無法執行chromedriver。 我的chromedriver文件被放置在資源文件夾中。aws lambda函數chromedriver不可執行

以下是我的測試配置文件:

@Configuration 
public class TestConfig { 

    private static final Logger l = LoggerFactory.getLogger(TestConfig.class); 

    private String chromeDriver = org.apache.commons.lang.SystemUtils.IS_OS_WINDOWS ? "chromedriver.exe" : "chromedriver" ; 

    public WebDriver getDriver(){ 
     URL resource = getClass().getClassLoader().getResource(chromeDriver); 
     String chromePath = null; 
     try { 
      chromePath = Paths.get(resource.toURI()).toString(); 
     } catch (URISyntaxException e) { 
      l.info("cannot find chromedriver in resources"); 
     } 
     System.setProperty("webdriver.chrome.driver", chromePath); 
     return new ChromeDriver(); 
    } 
} 

我都chromedriver和chromedriver.exe,我嘗試了和chmod 777文件,但沒有成功。

+0

我不認爲'chmod'會在創建zip文件之前做到這一點 - 在zip文件中沒有(afaik)結構來存儲權限。在本地解壓zip文件來檢查。也許你可以首先標記文件可執行文件[使用Java](https://stackoverflow.com/a/43859098/1695906)? –

+0

在lambda函數本身內部調用chmod。我將作爲獨立的jar部署到lambda函數中,而不是使用zip。我也嘗試用鏈接和setPosixFilePermissions來標記它,但仍然出現這個錯誤。 –

+0

另一個想法是:從[構建Lambda環境的基本映像]創建服務器(http://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html)並驗證這在這樣的機器上按預期運行。 –

回答

0

Lambda的限制爲300秒,內存限制爲1536MB。

這是一個非常糟糕的方法,您可以嘗試在您的lambda函數中啓動一個chromedriver。你應該做的是建立一個Selenium網格,然後使用RemoteWebDriver在遠程機器上啓動Chrome瀏覽器