1 回答

TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊
您的代碼中至少存在兩個(gè)問題:
你的 if 條件永遠(yuǎn)不會(huì)滿足,因?yàn)槟阍O(shè)置了 did = true。
您還需要抓住第二個(gè)
SessionNotCreatedException
才能重試。
代碼
這是固定的例子。正如您所看到的,我創(chuàng)建了一個(gè)單獨(dú)的方法來處理設(shè)備選擇。當(dāng)使用第一個(gè)設(shè)備時(shí),將處理異常并使用第二個(gè)設(shè)備。如果還使用了第二個(gè)設(shè)備,則該錯(cuò)誤SessionNotCreatedException
將被拋出,并且必須從調(diào)用者處捕獲。在 catch 塊中,您可以添加等待,因?yàn)樵O(shè)備可能仍會(huì)使用一段時(shí)間。
public class how_to_play_skip_test {
private RemoteWebDriver driver = null;
private static final int MAX_ATTEMPTS = 10;
@BeforeClass
public void setup()throws Exception{
int attempts = 0;
boolean done = false;
while ((MAX_ATTEMPTS > attempts) && !done) {
try {
this.driver = getDriver(config.desiredCapabilitites_galaxyss7());
done = true;
} catch (SessionNotCreatedException e) {
System.out.println("Trying again...");
//Maybe wait here some time?
}
attempts ++;
}
}
private RemoteWebDriver getDriver() throws SessionNotCreatedException {
if(capabilities == null){
throw new IllegalArgumentException("Capabalities must not be null");
}
try {
return new RemoteWebDriver(config.kobitonServerUrl(), config.desiredCapabilitites_galaxyss7());
} catch(SessionNotCreatedException ex){
System.out.println("Secondary device being used");
return new RemoteWebDriver(config.kobitonServerUrl(), config.desiredCapabilitites_galaxys7())
}
}
...
}
提示
如果您想使用兩個(gè)以上的設(shè)備,您應(yīng)該考慮一種更動(dòng)態(tài)的方式,例如循環(huán)遍歷包含每個(gè)設(shè)備功能的列表。
如果您對(duì) while 或 if 條件感到困惑,您可以嘗試使它們更易于理解(否定布爾值,刪除布爾值,...)。
這是一個(gè)沒有變量的例子done:
int max_attempts = 10;
int attempts = 0;
while(attempts < MAX_ATTEMPTS){
try{
//do something
attempts += MAX_ATTEMPS; //done
}catch(Exception ex){
//do something
}
attempts++;
}
添加回答
舉報(bào)