[英]Selenium WebDriver - Dropbox selection Java
大家好
對不起,有任何問題。 我是WebDriver的新手,所以我將為您提供所有幫助,如果您有任何粘性教程,我可以使用它,謝謝您。
因此,讓我們進入我的問題:
我有一個保管箱,並嘗試選擇每個值並使用按鈕確認,然后收到警告消息...。
這是我的代碼:
public void specialniBudovyVsechny() throws IOException{
try{
driver.findElement(By.xpath("//*[@id='budovy']/a")).click();
driver.findElement(By.xpath("//*[@id='main']/table[1]/tbody/tr[2]/td/strong[2]/a")).click();
Select listItem=new Select(driver.findElement(By.xpath("//*[@id='main']/table[2]/tbody/tr[2]/td[1]/select")));
String[] dropdown = new String[listItem.getOptions().size()];
WebElement element = driver.findElement(By.xpath("//*[@id='main']/p"));
for(int i=0;i<listItem.getOptions().size();i++)
{
listItem.selectByIndex(i);
dropdown[i] = listItem.getFirstSelectedOption().getText();
}
for(int a = 0;a<dropdown.length ;a++){
if(a == 0 | a == 1 | a == 12 | a == 13){
listItem.selectByVisibleText(dropdown[a]);
driver.findElement(By.xpath("//*[@id='main']/table[2]/tbody/tr[2]/td[2]/input")).click();
Assert.assertEquals(element.getText(), "Nemáš žádnou rozestavěnou budovu");
}
else{
listItem.selectByVisibleText(dropdown[a]);
driver.findElement(By.xpath("//*[@id='main']/table[2]/tbody/tr[2]/td[2]/input")).click();
Assert.assertEquals(element.getText(), "Tvá rozestavěná budova: "+dropdown[a]+" - 0%");
} } }
catch (Exception vyjimka){
getScreenShot();
System.out.println("SpecialniBudovyVsechny");
System.out.println(vyjimka);
}
每次出現此錯誤時: org.openqa.selenium.StaleElementReferenceException:在緩存中找不到元素-自查找以來頁面可能已更改命令持續時間或超時:11毫秒有關此錯誤的文檔,請訪問: http:/ /seleniumhq.org/exceptions/stale_element_reference.html構建信息:版本:'2.48.2',修訂版:'41bccdd',時間:'2015-10-09 19:55:52'系統信息:主機:'N0119', ip:'192.168.0.14',操作系統名稱:'Windows 7',os.arch:'amd64',os.version:'6.1',java.version:'1.8.0_65'驅動程序信息:org.openqa.selenium .firefox.FirefoxDriver功能[{applicationCacheEnabled = true,rotatable = false,handlesAlerts = true,databaseEnabled = true,version = 41.0.2,platform = WINDOWS,nativeEvents = false,acceptSslCerts = true,webStorageEnabled = true,locationContextEnabled = true,browserName = firefox,takesScreenshot = true,javascriptEnabled = true,cssSelectorsEnabled = true}]會話ID:8634cbaf-70db-4b07-a19f-b040ba5c60bd
我發現問題是數組,但我不知道如何解決。 如果我放置正確的數組,例如dropdown [2]。 有用
謝謝
作為建議,您可以嘗試輸入以下內容:
Select listItem=new Select(...
在循環中
我整理了一下您的代碼。 有幾個問題。 我想我把它放回正確的地方,但是我沒有辦法測試。
您將所有OPTION
值存儲在字符串數組中,然后遍歷該數組。 無需這樣做...您可以遍歷選項並在進行操作時比較文本。 省去了您必須遍歷兩次的麻煩。
在if..else
您正在兩個分支中執行相同的兩行代碼。 要清理此問題,只需在if..then
之前拉這兩行以防止冗余。
您正在使用|
代替||
。 我認為您打算使用||
邏輯OR
。 請參閱此頁面以獲取更多信息。
這是清理后的代碼。 試試看,讓我知道是否遇到任何問題。
public void specialniBudovyVsechny() throws IOException
{
try
{
driver.findElement(By.xpath("//*[@id='budovy']/a")).click();
driver.findElement(By.xpath("//*[@id='main']/table[1]/tbody/tr[2]/td/strong[2]/a")).click();
Select listItem = new Select(driver.findElement(By.xpath("//*[@id='main']/table[2]/tbody/tr[2]/td[1]/select")));
WebElement element = driver.findElement(By.xpath("//*[@id='main']/p"));
for (int a = 0; a < listItem.getOptions().size(); a++)
{
listItem.selectByIndex(a);
driver.findElement(By.xpath("//*[@id='main']/table[2]/tbody/tr[2]/td[2]/input")).click();
if (a == 0 || a == 1 || a == 12 || a == 13)
{
Assert.assertEquals(element.getText(), "Nemáš žádnou rozestavěnou budovu");
}
else
{
Assert.assertEquals(element.getText(), "Tvá rozestavěná budova: " + listItem.getFirstSelectedOption().getText() + " - 0%");
}
}
}
catch (Exception vyjimka)
{
getScreenShot();
System.out.println("SpecialniBudovyVsechny");
System.out.println(vyjimka);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.