0

私のアプリケーションは Google マップと統合されており、Selenium を使用していくつかの UI テストを作成しようとしています。テストの一環として、Google マップが提供する infoPopup で X を見つける必要があります。この要素には、Selenium で直接検索できる ID やクラスがありません。XPath を使用できますが、Google からの変更に対してテストが非常に脆弱になります。

一方、カスタム要素 (親と兄弟を使用) から DOM 構造をたどり、非常に簡単に見つけることができます (これが JavaScript でのアクセス方法です)。私の質問は、Selenium でも同じ方法でアクセスできるかどうかです。

HTML フォーム:

<div style="width: 10px; height: 10px; overflow: hidden; position: absolute; opacity: 0.7; right: 12px; top: 12px; z-index: 10000; cursor: pointer;">   
    <img src="http://maps.gstatic.com/mapfiles/mv/imgs8.png" draggable="false" style="position: absolute; left: -18px; top: -44px; width: 68px; height: 67px; -webkit-user-select: none; border: 0px; padding: 0px; margin: 0px;">
</div>

XPath://*[@id="map"]/div[1]/div[1]/div/div[3]/div[3]/div/div[13]/div[1]

私は Selenium の経験が非常に限られています。だから、私を助けるかもしれない要素を見つける他の方法があれば、それらについても学びたい.

4

2 に答える 2

1

あなたは使用することができますBy.XPath

driver.FindElement(By.XPath("//*[@id='map']/div[1]/div[1]/div/div[3]/div[3]/div/div[13]/div[1]"));

ただし、このような XPath は非常に不安定で保守が難しいため、お勧めしません。

意味のある XPath や CssSelector などを使用するとよいでしょう。

By.XPath("//*[@id='map']//div[./img[contains(@src, 'mapfiles/mv/imgs8.png')]]");
By.CssSelector("#map img[src$='mapfiles/mv/imgs8.png']"); 

XPath または CssSelector の詳細については、ドキュメントを参照してください。

于 2013-08-07T21:42:49.573 に答える