編集:要素にカーソルを合わせる簡単な方法を見つけましたが、結果がポップアップするのを待ちたいと思います。 Chrome Webドライバーが要素の上にホバリングし、移動速度が速すぎてテキストを表示できません。テキストがポップアップするまでホバーしたままにするにはどうすればよいですか?Wait()を確認しました。そしてuntil()ですが、正しく動作させることができないようです(これは、コードでブール値が真になるのを本当に待っていないためだと思います。誰かが提案をしない限り)。これまで...
WebDriver driver = getWebDriver();
By by = By.xpath("//*[@pageid='" + menuItem + "']");
Actions action = new Actions(driver);
WebElement elem = driver.findElement(by);
action.moveToElement(elem);
action.perform();
みなさん、ありがとうございました!
乾杯。
私がメソッドを使用していた時点では、テキストが表示されるのを十分に待っていなかったようです。最後に簡単なスリープ機能を追加することがまさに私が必要としていたものでした。
@When("^I hover over menu item \"(.*)\"$")
public void I_hover_over_menu_item(String menuItem)
{
WebDriver driver = getWebDriver();
By by = By.xpath("//*[@pageid='" + menuItem + "']");
Actions action = new Actions(driver);
WebElement elem = driver.findElement(by);
action.moveToElement(elem);
action.perform();
this.sleep(2);
}
public void sleep(int seconds)
{
try {
Thread.sleep(seconds * 1000);
} catch (InterruptedException e) {
}
}
同様のバインドで他の人を助けることを願っています!
乾杯!
あなたは睡眠に頼ることができないので、これを試してみるべきです:
WebElement myDynamicElement = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement")));
ExpectedConditions
クラスにはたくさんのメソッドがあります。
ここにいくつかの情報があります:
これがお役に立てば幸いです。
私もあなたと同じような問題を抱えています。
私はそれを解決しました。
はい、パフォーマンスを向上させるために、遅延を挿入するか、関数(...)。findElements(...)。size()を使用できると思います。関数の結果が0でない場合は、クリックするか、要素に対して他の操作を行うことができます。
" https://code.google.com/p/Selenium/wiki/GettingStarted "および " WebDriver:要素が存在するかどうかを確認しますか? "によると、挿入できます遅延させ、関数を使用して、必要な要素の存在を判別します。
// Sleep until the div we want is visible or 5 seconds is over
long end = System.currentTimeMillis() + 5000;
while (System.currentTimeMillis() < end) {
List<WebElement> elements = driver.findElements(By.id("btn"));
// If results have been returned, the results are displayed in a drop down.
if (elements.size() != 0) {
driver.findElement(By.id("btn")).click();
break;
}
}
必要な要素が表示されるか、時間が経過するまで待ちます〜!
以下は、マウスホバー用のC#のコードです。
Actions mousehover = new Actions(driver);
IWebElement Element_Loc = driver.FindElement(By.XPath("html/body/div[1]/table/tbody/tr/td[2]/div[2]/table[2]"));
mousehover.MoveToElement(Element_Loc).Build().Perform();
string Mouse_Text = driver.FindElement(By.XPath("html/body/div[1]/table/tbody/tr/td[2]/div[2]/table[2]")).GetAttribute("alt");
Boolean booltext = Mouse_Text.Equals("your mousehover text goes here.");
Console.WriteLine(booltext);
if (booltext.Equals(true))
{
Console.WriteLine("The text is verified and matches expected");
}
else
{
throw new Exception(" The text does not match the expected");
}
上記のコードは、基本的にActionsクラスの関数MovToElementを使用し、要素location(xpath)を取得して、(alt、titleなど)のような属性を取得し、文字列に格納します。後で、この値はテキストと比較されます。ブール値がtrueの場合、テストは合格です。