1

Hej Guys

私はグーグル視覚化APIを使用して積み上げ棒グラフを描画しています。それはすべて問題ありませんが、今はセレンでテストしたいのですが、グーグルチャートで要素を見つけるのに苦労しています。

たとえば、チャート要素をクリックしたいのですが、xpathで要素を検索しようとするたびに、「OpenQA.Selenium.NoSuchElementException:要素が見つかりませんでした」という例外が発生します。

私はセレンでsvg画像をクリックするのが難しいことを読みました。

ある種の絶望的な解決策を知っている人はいますか?私は自分でネット上で適切な解決策を見つけていません。

私のチャートは次のようになります。

http://i48.tinypic.com/21o4swx.png

私がやろうとしていることは:

        webdriver.Navigate().GoToUrl("http://localhost:59777/Tests/TestsMainView");
        IWebElement element = webdriver.FindElement(By.XPath("/html/body/div/div[2]/div[2]/iframe/html/body/div/svg/g[2]/g/g[2]/rect[5]"));
        Actions myAction = new Actions(webdriver);
        myAction.Click(element).Perform();
        Thread.Sleep(9999);

ありがとう :)

4

2 に答える 2

0

ここにあなたを助けるかもしれないいくつかのアドバイスがあります。最初に、コードの2行目は次のようになります。

WebElement element = webdriver.FindElement(By.xpath("//img[contains(@src,'http://i48.tinypic.com/21o4swx.png')]"))

あなたは「IWebElement」を持っていました(これはおそらくあなたの質問のタイプミスでした)。トップレベルから始めて下に向かって進むのではなく、一致する要素を検索する要素の検索方法を変更しました。これは、操作しようとしている要素を絞り込んで、コードを変更してもすぐにテストが中断されないようにするためのより良い方法です。また、xpath式を「//」または「xpath =」で開始しない限り、selenium Webdriverはそれを認識しないため、パスが変更されていなくても、seleniumWebdriverはそれを見つけることができません。

あなたがやろうとしていることを私が理解しているなら、3-5行目を削除して次のように置き換えることもできます。

element.click();

これにより、セレンWebドライバーがリンクによって提供されるチャートにズームインします。これがお役に立てば幸いです

于 2012-12-17T17:15:19.607 に答える
0

xpathがsvgタグ内で何も選択できないことに気づきました。代わりにclassNameまたはtagNameセレクターを使用して要素を見つけることができました。あるいは、cssSelectorsを試すこともできましたが、それについてはよくわかりません。xpathを使用して、以下を使用してsvg内のノードの親にアクセスできることに注意してください。

     By.xpath("..");

それがお役に立てば幸いです。

于 2013-02-12T17:29:58.663 に答える