5

Firefox用のchromeモードでSeleniumRCを使用して、Webアプリケーションのテストケースを自動化しています。TestNGフレームワークとEclipseを使用してJavaでスクリプトを書いています。ここで要点を説明します。

特定のXPathを認識するためのSeleniumRCに問題があります。XPathをFirefox用のXPath-Checker拡張機能で検証しますが、エラーは表示されません。次に、Selenium IDEで試して、XPathが認識されていることを確認します。IDEでさえ要素を認識します。しかし、そのSeleniumRCはそれを認識しません。これを修正するために私にできることはありますか?

具体的には、次の特定の領域をクリックしようとしています。

html/body/form/div[@id='someid1']/div[@class='someClass']/div[@id='someid2']/div[@id='someid3']/div[@id='someid4']/div[@title='titleOfTheElement']

それから私も試しました:

//div[@title='titleOfTheElement']
xpath=//div[@title='Automated User']
xpath=/descendant::div[@title='Automated User']

まだ何もありません!

1)誰かが何が間違っている可能性があるか、またはSeleniumがXPathに問題があることがわかっているかどうかを提案できますか?

2)Selenium RCのように物事を見るのに役立つアドオン(XPathチェッカーに似ています)はありませんか?このようにして、RCがXPathを認識するかどうかを確認できます。

ありがとう、
無限

Seleniumコードは次のとおりです。

selenium.click("somelink");
selenium.waitForPageToLoad("30000");

boolean flag=false
  do{
    if (selenium.isTextPresent("Some text on the page which loads last"))
    {
      flag=true
    }
  }while(flag=false);


selenium.click("locator for area which is driving me crazy");

最後のステップで、ページ上の他の場所(他のロケーターを意味する)をクリックすると、クリックが機能します。

この領域のHTMLは次のようになります。

<div id="someid1" style="overflow: hidden;">
<div id="someid2" title="title1" class="someclass">title1</div>
<div id="someid3" title="title2" class="someclass">title2</div>
<div id="someid4" title="required title" class="someclass">required title</div>
<div id="someid5" title="title3" class="someclass">title3</div>
<div id="someid6" title="title4" class="someclass">title4</div>
<div id="someid7" title="title5" class="someclass">title5</div></div>

これを調べてくれてありがとう。:-)

4

5 に答える 5

6

title属性を持つdivがあるのが正しいかどうかはわかりません。要素を見つけるために使用できる別の属性はありませんか?

とにかく、それが機能する場合に備えて、これがロケーターのcssバージョンです:

css=div[title='Automated User']
于 2009-09-18T13:00:16.837 に答える
2

あなたの例から、あなたはターゲット要素のIDを使うことができるはずです:

selenium.click("id=someid4");

IDは動的に生成され、この方法を使用できないと思われますが。

次のxpathが機能しない理由がわかりません。

selenium.click("//div[@title='required title']");

それをターゲットにする他の方法は次のとおりです。

selenium.click("css=div[title='required title']");
selenium.click("css=.someclass:nth-child(4)"); //must be 4th child of parent element

divは実際のターゲット要素ですか?クリックイベントに応答しますか?クリックに応答する子要素がある場合は、代わりにそれをターゲットにする必要があります。また、次のコマンドを使用してトラブルシューティングを試すこともできます。

mouseDown
mouseUp
fireEvent
于 2009-09-18T13:24:21.093 に答える
2

FirefoxでSeleniumテストを実行するときに、XPath式で問題が発生したことがあります。

  • 別のブラウザで同じテストを実行してみましたか?
  • すべての要素名をアスタリスク記号()に置き換えたのを覚えています*。すなわち

    // * [@ id ='someid1'] / * [@ class ='someClass'] / * [@ id ='someid2']

于 2009-09-18T13:05:16.673 に答える
0

ページがRCで正しくロードされていることを確認しますか?つまり、ブラウザが開いてページがロードされていることを確認しますか?

于 2009-09-18T11:38:36.320 に答える
0

スクリプトはWebページよりも高速である可能性があります。しばらくお待ちください。あなたが使うことができるようにwaitForCondition("selenium.isElementPresent("ElementID")","20000");

xpath.tryで摩耗していないように思われるので、これが役立つ場合があります。

于 2012-01-17T03:05:13.163 に答える