2016-08-02 6 views
0

私は公共の場所で働いています:
http://preview.harriscountyfws.org/ElementNotVisible例外セレンwebdriverをJavaの

、以下に示すロジックはElementNotVisibleExceptionに遭遇しました。 しかし、 "//"で始まる2行のコメントを外してそのコードの上の2行をコメントアウトすると、コードはうまく動作します(しかし、これは必要なものとは別のドロップダウンです)。

私は困惑しています。 「降雨の最後の」ドロップダウンから選択できます。 しかし、まったく同じ方法を使用して、「場所によるGage」ドロップダウンから選択することはできません。

[Gage by Location]ドロップダウンリストから選択するにはどうすればよいですか?

package sdfwe.sdwd.qsde; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.chrome.ChromeDriver; 

public class Gfgsdrfffde { 
    public static void main(String[] args) { 
     System.out.println("Running Tests...."); 
     // Optional, if not specified, WebDriver will search your path for chromedriver. 
     System.setProperty("webdriver.chrome.driver", "C:\\ChromeDriver\\chromedriver.exe"); 
     WebDriver driver = new ChromeDriver(); 
     driver.get("http://preview.harriscountyfws.org/"); 
     driver.manage().window().maximize(); 
     WebElement we; 
     String searchText; 
     WebElement dropdown; 
     //if you comment out the next two lines after these comments and 
     // uncomment out the commented lines below, the code works 
     searchText = "110:A100_110 Clear Creek @45"; 
     dropdown = driver.findElements(By.cssSelector("span.k-widget")).get(3); 
    //  searchText = "24 Hours"; 
    //  dropdown = driver.findElements(By.cssSelector("span.k-widget")).get(1); 
     System.out.println("Attempting Dropdown Click...."); 
     dropdown.click(); 
     System.out.println("Finished running Dropdown Click...."); 
     Sleep(4); 
     //Select dd2 = new Select(driver.findElement(By.id("ddlTimeSpan"))); 
     //dd2.selectByVisibleText(searchText); 
     we = driver.findElement(By.xpath("//li[text()='" + searchText + "']")); 
     if (we != null) { 
      we.click(); 
     } 
     System.out.println("Finished Selecting Dropdown...."); 
     //driver.quit(); 
    } 
    public static void Sleep(int i) 
    { 
     try { Thread.sleep(i * 300); } 
     catch(InterruptedException ie) { System.out.println("Unexpected error in sleep"); } 
    } 
} 
+0

インデックスで選択することは、常に信頼性が低くなります。実際に 'driver.findElements(By.cssSelector(" span.k-widget "))'が返され、正しい要素を選択したかどうか、または目的の要素を直接選択しないことを確認する必要があります。 'driver.findElement(By.xpath(" span(text))= '(Select Gage)'] "));' –

答えて

0

私はあなたのコードを試してみましたが、あなたはそれが動作するためにこれらの変更を行う必要があります。

searchText = "110:A100_110 Clear Creek @ I-45"; 
    dropdown = driver.findElement(By.cssSelector("span[aria-owns='ddlGage_listbox']")); 

ここでは上記のあなたの例からベースの完全に動作するコードがあります。

 public static void main(final String[] args) { 
    System.out.println("Running Tests...."); 
    // Optional, if not specified, WebDriver will search your path for 
    // chromedriver. 
    System.setProperty("webdriver.chrome.driver", "C:\\ChromeDriver\\chromedriver.exe"); 
    final WebDriver driver = new ChromeDriver(); 
    driver.get("http://preview.harriscountyfws.org/"); 
    driver.manage().window().maximize(); 
    WebElement we; 
    String searchText; 
    WebElement dropdown; 
    // if you comment out the next two lines after these comments and 
    // uncomment out the commented lines below, the code works 
    searchText = "110:A100_110 Clear Creek @ I-45"; 
    dropdown = driver.findElement(By.cssSelector("span[aria-owns='ddlGage_listbox']")); 
    // searchText = "24 Hours"; 
    // dropdown = 
    // driver.findElements(By.cssSelector("span.k-widget")).get(1); 
    System.out.println("Attempting Dropdown Click...."); 
    dropdown.click(); 
    System.out.println("Finished running Dropdown Click...."); 
    Sleep(4); 
    // Select dd2 = new Select(driver.findElement(By.id("ddlTimeSpan"))); 
    // dd2.selectByVisibleText(searchText); 
    we = driver.findElement(By.xpath("//li[text()='" + searchText + "']")); 
    if (we != null) { 
     we.click(); 
    } 
    System.out.println("Finished Selecting Dropdown...."); 
    // driver.quit(); 
} 

また、単純なセレンスクリプトの場合は、https://github.com/codezombies/easytestにチェックを入れたい場合があります。

easytestフレームワークを使用した同じスクリプトです。

public static void main(String[] args) throws Exception { 

    try(EasyTest easy = new EasyTest(DriverType.CHROME)) { 


     easy.start("http://preview.harriscountyfws.org/"); 

     easy.newPage(page -> { 
      page.click("span[aria-owns='ddlGage_listbox']"); 

      final String searchText = "110:A100_110 Clear Creek @ I-45"; 
      page.executeIn("#ddlGage_listbox", container -> { 
       page.click("//li[text()='" + searchText + "']"); 
      }); 

     }); 
    } 
} 
+0

私はあなたの最初のコードを試しました。私は持っています:ドロップダウンしようとしました.... 終了したドロップダウンクリック.... スレッド "main"の例外org.openqa.selenium.NoSuchElementException:そのような要素がありません:要素を見つけることができません:{"method": "xpath "、" selector ":"/li [text()= '110:A100_110 Clear Creek @ I-45'] "} " Finished Running Dropdownをクリックしているため、私たちはdriver.findelement行で起こっていると思います。 .. "と表示されましたが、すべての選択肢でドロップダウンが表示されませんでした。 –

+0

sevenFLip、私はこのことを動作させるために、コードをコメントアウトしなければなりませんでした: "printf(ドロップダウンを終了しました")。知りません。これは奇妙です。 –

+0

@SirFartsalotそれはできません。私は、いくつかの要素が適切に読み込まれていないということが、それらの要素を選択して実行する前に起こっていると思います。 – sevenFLiP

0

あなたはこれを試すことができます。

WebDriverWait wait = new WebDriverWait(driver, 10); 
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("select#ddlGage"))); 
    Select gageByLocationSelect = new Select(driver.findElement(By.cssSelector("select#ddlGage"))); 
    gageByLocationSelect.selectByVisibleText("110:A100_110 Clear Creek @ I-45"); 

が、これはあなたを助けることを願っています!

+0

あなたは私が修正したいくつかの構文エラーがありましたが、うまくいきませんでした。同じ問題。 org.openqa.selenium.ElementNotVisibleException –

+0

は私の答えを更新しました.. –

+0

はまだ構文エラーがありますが、修正しました。いいえ、動作しませんでした。スレッド "main"の例外org.openqa.selenium.TimeoutException:By.cssSelector: –

関連する問題