我試圖自動化具有不同公制系統的網站。 該應用程序支持美製公制系統&英制公制系統。 例如:如果我從美國服務器打開應用程序,我會看到英尺&英寸的文本框,&如果我從其他服務器打開相同的應用程序,我會看到釐米級的文本框。無法找到元素 - 使用硒webdriver自動化不同區域設置的網站
我寫我的代碼,以便它首先檢查是否有支腳&英寸的文本框元素存在,如果它存在,那麼它會開始&輸入值在這些文本框,否則,如果腳&英寸不存在,然後在釐米文本框中輸入值。
/*
*
* This block is for the values in US version
*
*/
@FindBy(xpath = ".//*[@id='profile_height_large_value']")
WebElement CurrentHeightinFeet;
@FindBy(xpath = ".//*[@id='profile_height_small_value']")
WebElement CurrentHeightinInches;
/*
* This block is for the values in British version
*
*/
@FindBy(xpath = ".//*[@id='profile_height_display_value']")
WebElement CurrentHeightinCM;
而我的代碼來檢查它是否在任一版本如下。
public void userFitnessDetails() {
CurrentWeight.sendKeys("70");
if (CurrentHeightinFeet.isDisplayed()) {
CurrentHeightinFeet.clear();
CurrentHeightinFeet.sendKeys("5");
CurrentHeightinInches.clear();
CurrentHeightinInches.sendKeys("10");
}
CurrentHeightinCM.clear();
CurrentHeightinCM.sendKeys("170");
}
如果我執行上面的代碼中,我得到一個錯誤 - 失敗:註冊 org.openqa.selenium.NoSuchElementException:找不到元素:
{"method":"xpath","selector":".//*[@id='profile_height_large_value']"}
有人能指導我解決這個?
感謝
我按照您的建議更改了我的代碼,但是,在我的狀況檢查中遇到了問題。 – AdiBoy
@FindBy(xpath =「.//*[@id='profile_height_display_value']」)) \t WebElement CurrentHeightinCM; (@FindBy(id =「profile_goal_weight_display_value」)) \t WebElement GoalWeight;在我的條件檢查中,我使用if(CurrentHeightinFeet.size()> 0 && CurrentHeightinInches.size()> 0)。 \t \t \t CurrentHeightinFeet.sendKeys(「5」); \t \t \t CurrentHeightinInches.clear(); \t \t \t CurrentHeightinInches.sendKeys(「10」); 「 \t \t}」方法sendKeys(字符串)未定義類型列表「 –
AdiBoy
您不能在包含WebElements的列表上調用sendKeys。所以當列表大小大於0時,你的條件就會被滿足。您正在查找的元素需要從列表中提取。使用列表上的get(0)方法獲取WebElement。然後使用sendKeys方法。 – Grasshopper