5

アイコンの上にマウスを置くと、ツールチップのテキストが表示される小さな手荷物アイコンがあります。Visual Studio で C# コードを記述して、これをテストしたいと考えています。

手荷物アイコンを html で表示する方法は次のとおりです。

<div class="icon_png information icon_baggageyes" title="1 piece included in this fare."></div>

ツールチップをテストするコードは次のとおりです。

Actions a = new Actions(driver);
IWebElement tooTipObject = driver.FindElement(By.XPath("//div[@class='icon_png information icon_baggageyes']"));
a.MoveToElement(tooTipObject).Click().Build().Perform();

問題は、上記のコードを段階的にデバッグすると、ツールチップ テキストが表示されることです。しかし、テストを実行すると、ツールチップ テキストが表示されるようになりました。

インターネットで検索すると、ツールチップ テキストが表示されるまで、マウスが手荷物アイコンに十分な時間フォーカスしていないことが原因であると言う人もいます。

しかし、この問題を解決するにはどうすればよいでしょうか。私は解決策を探していましたが、自分に合った解決策を見つけることができませんでした。

もう 1 つの質問は私のコードです。ツールチップのテキストは、このコードを挿入したa.MoveToElement(tooTipObject).Click().Build().Perform(); 場合にのみ表示されます。.Click()しかし、私はマウスのホバーオーバー機能をテストしています。アイコンをクリックしてはいけません。これはとても奇妙です。

4

5 に答える 5

2

divツールチップはの属性によってトリガーされるので、titleその属性値をチェックするだけではどうですか? ホバリング時にすべてのブラウザがツールチップとして表示するという前提に依存していますtitle(私が知る限り、すべてのデスクトップブラウザがそうです)。

簡単にグーグルで調べてみると、これらの行に沿ったものがうまくいくようです:

WebElement element = driver.FindElement(
     By.XPath("//div[@class='icon_png information icon_baggageyes']"));
string titleText = element.getAttribute("title");

その後、titleText期待どおりであることを確認できます。

于 2013-03-14T05:57:30.190 に答える
1

UI インタラクションに Java Robot を使用します。ここでは、マウスのアクションを制御するためにロボットが使用されます。

WebElement targetElement = driver.findElement(By.id("value"));
Point coordinates = targetElement.getLocation();
Robot robot = new Robot(); 
robot.mouseMove(coordinates.getX(), coordinates.getY() + 65); //Number 65 should vary

Thread.sleep(3000);
String tooltip = driver.findElement(By.id("value"")).getAttribute("title");
System.out.println(tooltip);
于 2014-01-24T08:04:00.400 に答える
1

私はおそらく少し遅れていますが、うまくいったことは次のとおりです。

IWebElement elementToHover = graphRegion.FindElement(By.CssSelector(CSSSelector));
Actions hover = new Actions(driver);

hover.MoveToElement(elementToHover);
Thread.Sleep(2000);
hover.Perform();

私は主に、多くの OS の組み合わせで Chrome をテストしています。ブラウザを最大化し、スリープしないと、主に Linux でツールチップが表示される時間の長さに問題がありました (Mac では信頼性が低い)。

「アクション」の一部として Thread.Sleep(2000) が実行される理由が少しわかりません。いくつかの異なるカスタム待機方法を試しましたが、2 秒以上の明示的な Sleep によって必要な信頼性しか達成できませんでした。

より良いオプションがあると確信していますが、これは私にとってはうまくいっています!

于 2013-11-15T16:40:04.973 に答える
0

ロボットを使ってアイコンにカーソルを合わせます。ただし、要素をクリックしやすくするために、セレンで動作するようにロボットを調整する必要がありました。

セレンを使用したロボットのキャリブレーションについては、こちらの回答を参照してください。

于 2013-05-08T22:30:45.050 に答える
0

私は同じ問題を抱えています。あなたが言っていることが正しいOPであり、要素に十分な時間ホバリングしていない場合、メソッドが「要素に移動してからすぐに要素から離れる」ではなく「要素に移動」と呼ばれる理由がわかりません

また、クリック アンド ホールドは、要素に移動するのと同じ動作を示します。これはおそらくセレンのバグだと思います。

これは残念です。クリックを使用するだけだと思いますが、要素をクリックすると、開始したくない別の一連のアクションが開始されますが、ホバリングはツールチップを表示するのに役立つはずです。

クロームドライバーを使用しています。

于 2013-04-04T17:18:45.893 に答える