我在某些特定情況下遇到了一些困難。當div被隱藏時無法找到元素
當沒有錯誤時,頁面如下所示。
<script src="includes/js/errorHandling.js?v=5" type="text/javascript"/>
<div class="pmo_title">
<!--end pmo title-->
<div class="spacer2"/>
<div class="pmo-container">
但是,如果發生任何錯誤顯示額外的div類。
<script src="includes/js/errorHandling.js?v=5" type="text/javascript"/>
<div class="pmo_title">
<!--end pmo title-->
<div class="pmo_warning">
<div class="pmo-container">
<span class="message_title">Errors :</span>
<!--display first item of list with no comma-->
<span id="fileError" class="error">File to Upload required</span>
</div>
</div>
<div class="spacer2"/>
<div class="pmo-container">
我想驗證我是否上傳了一個無效文件,並顯示錯誤拋出異常,否則繼續。
我寫了下面的代碼
@FindBy(xpath = "//div[@class='pmo_warning']")
private WebElement errorMessage;
if (errorMessage !=null){
throw (new IOException("file not found"));
}
return initialize(driver, FileUpload.class);
它拋出異常的有效和無效輸入
我也曾嘗試
@FindBy(xpath = "//div[@class='pmo_warning']")
private WebElement errorMessage;
if (errorMessage.IsDisplayed()){
throw (new IOException("file not found"));
}
return initialize(driver, FileUpload.class);
對於文件沒有錯誤時顯示:
無法羅列美食元素
謝謝它的作品。唯一的問題是Find all會增加等待時間。 – user2410266
爲什麼只需要一個FindBy的FindAll註解? FindAll爲列表中提到的所有FindBy提供OR運算符。看看這個 - http://stackoverflow.com/questions/25914156/difference-between-findall-and-findbys-annotations-in-webdriver-page-factory。您可以刪除FindAll,只需使用帶有單個FindBy批註的列表聲明。 –
Grasshopper
@Grasshopper FindBy只是返回單個WebElement,可以用FindAllBy代替'@FindAllBy(how = How.CSS,using =「div.pmo_warning」)列表 errorMessage' ..感謝指出...... :) –