2016-05-30 12 views
0

サイドバーメニューでは、メニュー項目に移動します。私はこのコードを使用しています:MoveToElementは、xOffsetとyOffsetを使用している場合にのみ動作します

@FindBy(xpath = ".//*[id = 'サイドバーラッパー']/ul // a [contains(text()、 'Contact')]") WebElement contactLink;

public void clickHamburgerMenuAndContactLink() { 
    Actions action = new Actions(driver); 
    action.click(hamburgerMenu).moveToElement(contactLink, 0, 0).click().perform(); 

} 

これは時には失敗しますが(動作は不安定ですが)、これはほとんどの場合動作します。

まず、moveToElementメソッドの引数としてwebelementのcontactlinkだけを使用して、xとyのOffsetに言及せずに移動しようとしました。これはまったく動作しません、私は理由を理解していません。私もperform()の前にbuild()を使ってみましたが、違いはありません。

+1

:メニューはその最終位置に達すると、それが表示されているので、私は閉じるボタンを待つでしょう。 contactLink.click()を直接使っていないのはなぜですか? –

+1

ウェブサイトを共有できますか? –

+0

http://www.turnjavaforus.nl/index.php – Frank

答えて

0

不安定な動作は、おそらく接触リンクを不安定にするアニメーション効果によるものです。あなたはhamburgerMenu要素をクリックした後contactLink要素を見つけている場合

public void clickHamburgerMenuAndContactLink() { 
    WebDriverWait wait = new WebDriverWait(driver, 10000); 
    hamburgerMenu.click(); 
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("menu-close"))); 
    contactLink.click(); 
} 
+0

Thank you Florent、これは私の問題の解決策です。それはどんな躊躇もなく素晴らしい作品です。 – Frank

関連する問題