2011-09-13 10 views
0

testNGでselenium2.0を使用しています。 XPATHまたはCSSを使用して要素を検索すると、その要素が見つからないというエラーが表示されます。 私は以下 として、Javaでプログラムされている。この上で私を助けてくださいselenium2の要素を見つける際のエラー

public class mytest { 

    public static WebDriver driver; 
    public Alert alert; 

    @BeforeClass 
    public static void setUpBeforeClass() throws Exception { 
     driver=new FirefoxDriver(); 

    driver.get("http://localhost:4503/xyz.html"); 

    } 

    public static void clickButton(WebDriver driver, String identifyBy, String locator){ 
     if (identifyBy.equalsIgnoreCase("xpath")){ 
      driver.findElement(By.xpath(locator)).click(); 
     }else if (identifyBy.equalsIgnoreCase("id")){ 
      driver.findElement(By.id(locator)).click(); 
     }else if (identifyBy.equalsIgnoreCase("name")){ 
      driver.findElement(By.name(locator)).click(); 
     } 

    } 

    public static void typeinEditbox(WebDriver driver, String identifyBy, String locator, String valuetoType){ 
     if (identifyBy.equalsIgnoreCase("xpath")){ 
      driver.findElement(By.xpath(locator)).sendKeys(valuetoType); 
     }else if (identifyBy.equalsIgnoreCase("id")){ 
      driver.findElement(By.id(locator)).sendKeys(valuetoType); 
     }else if (identifyBy.equalsIgnoreCase("name")){ 
      driver.findElement(By.name(locator)).sendKeys(valuetoType); 
     } 

    } 


    public static void openApplication(WebDriver driver, String url) { 
     driver.get(url); 
    } 






    @Test 
    public void testAcrolinxApplication() throws InterruptedException { 
     openApplication(driver,"http://xyz.com"); 
     typeinEditbox(driver,"name","p_user","xxx"); 
     typeinEditbox(driver,"name","p_pas","yyy"); 
     clickButton(driver,"id","input-submit"); 

/*Up to this its working fine ….. 

At below line this throws error could not locate the xpath element "//a[@id='cq-gen100']/em/span/span" BUT THIS IS WOKING FINE IN Selenium1.0 api that is with 
selenium.click("//a[@id='cq-gen100']/em/span/span"); */ 

driver.findElement(By.xpath("//a[@id='cq-gen100']/em/span/span")).click(); 




    } 

} 

。事前に おかげで...

答えて

0

driver.manageに動作します()タイムアウト()implicitlyWait(10、TimeUnit.SECONDS);。。 を、Noewその作業いくつかの時間を待ちます。

1

は確かにXPathの/ CSSクエリがFirefinderか、ページ上で直接XPathクエリをテストすることができます何か他のもののような正しい

ダウンロード何かであることを確認してください。クエリが正しいことを確認したら、Seleniumの問題を絞り込むことができます。たとえば、クエリ"//a[@id='cq-gen100']/em/span/span"が動作しない場合は、クエリのベースを試してみて、セレンがそれを見つけたかどうかを確認セレン

で問題絞り込む

(今のクリックを心配しないでください)。エラーが再び表示されるまでそこから増分します。

例:

driver.findElement(By.xpath( "// [@ ID = 'CQ-gen100']"); //作品 driver.findElement(By.xpath(? "// a [@ id = 'cq-gen100']/// works? driver.findElement(By.xpath(" // a [@ id = 'cq-gen100']/em/span 「); // // など

私が使用している
+0

@prestomanifestoありがとう、私はこれを試し、それに戻って取得します。しかし、正しいXPATHやCSSを見つけてWeb要素を見つけるためのツールや方法はありますか?+ – smriti

+0

Firebugは、要素のXPathとCSSの両方のパスを取得できます(HTMLタブで要素を右クリックし、XPathのコピーを選択しますまたはCopy CSS Path)をクリックします。しかし、私はパスが非常に長く、柔軟ではないので、これに反対することをお勧めします。手でパスを書いたりデバッグしたりするのは、少なくとも私にとってはうまくいっています。 – prestomanifesto

+0

ありがとう、プレストマンフィスト。 – smriti

関連する問題