簡體   English   中英

Selenium WebDriver-Dropbox選擇Java

[英]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(...

在循環中

我整理了一下您的代碼。 有幾個問題。 我想我把它放回正確的地方,但是我沒有辦法測試。

  1. 您將所有OPTION值存儲在字符串數組中,然后遍歷該數組。 無需這樣做...您可以遍歷選項並在進行操作時比較文本。 省去了您必須遍歷兩次的麻煩。

  2. if..else您正在兩個分支中執行相同的兩行代碼。 要清理此問題,只需在if..then之前拉這兩行以防止冗余。

  3. 您正在使用| 代替|| 我認為您打算使用||邏輯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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM