亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

org.apache.commons.exec.ExecuteException:

org.apache.commons.exec.ExecuteException:

萬千封印 2022-07-14 17:23:26
當我通過 TestNG XML 執行 TestNG 套件時,我觀察到以下錯誤。嚴重:org.apache.commons.exec.ExecuteException:進程退出并出現錯誤:-1073741502(退出值:-1073741502)配置失?。篅BeforeMethod initializetest org.openqa.selenium.WebDriverException:等待驅動程序服務器啟動超時。構建信息:版本:'3.141.59',修訂:'e82be7d358',時間:'2018-11-14T08:17:03' 系統信息:主機:'PDC2LAP-7173253',ip:'10.170.10.178',os .name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_162' 驅動程序信息: driver.version: ChromeDriver at org.openqa.selenium.remote。 service.DriverService.waitUntilAvailable(DriverService.java:202) 在 org.openqa.selenium.remote.service.DriverService.start(DriverService.java:188) 在 org.openqa。http://localhost:33768/status]在 org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:100) 的 org.openqa.selenium.remote.service.DriverService.waitUntilAvailable( DriverService.java:197) ... 35 更多原因:com.google.common.util.concurrent.SimpleTimeLimiter 的 java.util.concurrent.FutureTask.get(FutureTask.java:205) 的 java.util.concurrent.TimeoutException .callWithTimeout(SimpleTimeLimiter.java:156) at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:75) ... 還有 36 個對于 10-12 次測試,測試最初運行順利,但后來因上述錯誤消息而失敗。我希望這是配置版本的一些問題,但我無法找到它。
查看完整描述

2 回答

?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

嗨。讓我們嘗試逐步調試它:

您能否也分享一下testng.XML套件如何組織和分享您嘗試執行的測試代碼?

從我看到的異常中 - 它試圖訪問瀏覽器實例并且由于某種原因它無法訪問??赡茉诖a中被調用
driver.close(); 或 driver.quit();某處。

關于 testNG 配置 - 您可以查看框架規范 和/或 表示測試套件如何組織的示例。

希望它對你有幫助,問候,尤金

============== UPD 2019/03/02 除了上面提供的顯式版本控制@debanjanB ^^ 之外,我建議通過以下方式重新編寫代碼:

改進 #1 驅動程序初始化(我已將此方法與適當的配置分開;我個人使用的是 selenium GRID,但您可以繼續使用 Chromedriver 您在代碼中使用,我會說這是習慣問題):

public static WebDriver driverSetUp(WebDriver driver) throws MalformedURLException {


ChromeOptions options = new ChromeOptions();

options.addArguments("-incognito");

DesiredCapabilities capability = DesiredCapabilities.chrome();

capability.setCapability(ChromeOptions.CAPABILITY, options);

//System.setProperty("webdriver.chrome.driver", System.getProperty("user.home")+"/Documents/:Proj_folder:/chromedriver");

System.setProperty("webdriver.chrome.driver", "chromedriver.exe");

capability.setBrowserName("chrome");

capability.setCapability("nativeEvents", true);

LoggingPreferences logs = new LoggingPreferences();

//Javascript console logs from the browser

logs.enable(LogType.BROWSER, Level.WARNING);

logs.enable(LogType.PERFORMANCE, Level.ALL);

capability.setCapability(CapabilityType.LOGGING_PREFS, logs);

String webDriverURL = "http://" + environmentData.getHubIP() + ":" + environmentData.getHubPort() + "/wd/hub";

log.info("creating driver instance on the URL :#### " + webDriverURL);

driver = new RemoteWebDriver(new URL(webDriverURL), capability);

driver.manage().window().maximize();

return driver;}






public static WebDriver driverInit(WebDriver driver, String startingUrl) throws MalformedURLException {

    driver = DriverInit.driverSetUp(driver);

    driver.get(startingUrl);


    return driver;

}

如果您需要執行驅動程序重新啟動操作 - 您可以使用driver.close() 包含在 try-catch 塊中的驅動程序初始化


public static WebDriver driverRestart(WebDriver driver, String startingUrl) throws MalformedURLException {

    try {

        driver.close();

    } catch (WebDriverException e) {

        log.error("#### oops, seems driver instance have been already closed. Doing re-initialization right now!", e.getMessage(), e);

    }

    return driverInit(driver, startingUrl);

}

所以AfterMethod看起來像(請添加 'alwaysRun=true'標志):


   @AfterMethod(alwaysRun = true)

    public void closeDriverInstance() {

        try {

        File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);

            FileUtils.copyFile(scrFile, new File(

String.format("c:\\SeleniumScreenshots\\%s.jpg", count)));

            driver.close();

        } catch (Exception e) {

            log.info(" oops, it seems that driver instance have been already closed.");

        }

    }

改進#2


請稍微修改 testng XML(請在套件標簽中顯式添加parallel="false"標簽):


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">


<suite name="CustomerPortalTestSuite-SIT2" parallel="false" thread-count="5" verbose="8">

  <test name="CustomerPortalTestExecution">

    <classes>

    <class name="testclasses.CustomerPortalSupportTest"/>

    <class name="testclasses.CustomerPortalAccountTest"/>

    <class name="testclasses.CustomerPortalBillingTest"/>

    <class name="testclasses.CustomerPortalHomeTest"/>

    </classes>

  </test> <!-- Test -->

</suite> <!-- Suite --> 

改進#3(假設)如果沒有幫助。根據經驗,如果對于某些測試,chrome 實例已啟動并且多次關閉并再次重新啟動 - 您可能仍然有一堆 chromedriver.exe進程(掛在您的系統中并阻止新的 chromedriver 處理啟動)

因此,如果您發現您有很多進程,要在 WIN 中殺死它們 - 您可以調用以下命令:

Taskkill /T /F /IM chromedriver.exe

因此,考慮到您在每個測試方法之后每次都“殺死”您的 chrome,您還可以在 after 方法中另外殺死任何 chromedriver 進程(此處解釋了 如何執行包裝在 java 代碼中的 cmd)。


查看完整回答
反對 回復 2022-07-14
?
森欄

TA貢獻1810條經驗 獲得超5個贊

此錯誤消息...


 org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start. 

Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03' 

System info: host: 'PDC2LAP-7173253', ip: '10.170.10.178', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_162' 

Driver info: driver.version: ChromeDriver

..意味著ChromeDriver無法與WebElement交互。

您的主要問題是您使用的二進制文件版本之間的不兼容,如下所示:

盡管您提到了使用:

  • Java版本是Java版本“1.8.0_201”

  • ChromeDriver 2.43.600210

Tracelogs 說:

java.version: '1.8.0_162'

當您使用Selenium v3.141.59時,組件不兼容。


解決方案


查看完整回答
反對 回復 2022-07-14
  • 2 回答
  • 0 關注
  • 320 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號