簡體   English   中英

菜單項未按Selenium WebElement單擊

[英]menu item does not click by Selenium WebElement

請參見以下代碼段。 我要單擊菜單項:“帳戶管理”,Java函數未返回。 顯示了菜單項,我可以手動單擊。

<body ...> <div ...> <div...>
  <ul...>
    <li class="x">
      <a class="y" key="z", href="javascript:void(0)">
        <span class="z2" lan="14377" v="Account Management">Account Management</span>
      </a>
    </li>
  </ul>

public static boolean actionClickByXPath(WebDriver browser, String xpath) {

    WebDriverWait wait = new WebDriverWait(browser, 3);
    JavascriptExecutor js = ((JavascriptExecutor) browser);     
    wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(xpath)));  

    //scrolling
    WebElement webelement = browser.findElement(By.xpath(xpath)); 
    js.executeScript("arguments[0].scrollIntoView(true);", webelement);

    //clickable
    wait.until(ExpectedConditions.elementToBeClickable(By.xpath(xpath)));

    boolean clicked = false;
    do{
        try {
            webelement.click();
        } catch (WebDriverException e) {
            Sleep(200);
            continue;
        } finally {
            clicked = true;
        }
    } while (!clicked);
    return true;
}

嘗試單擊“ Account Management ”文本

.//*[contains(text(), 'Account Management')]

要么

.//*[contains(., 'Account Management')]

我也更改了代碼的順序

JavascriptExecutor js = ((JavascriptExecutor) browser);
js.executeScript("arguments[0].scrollIntoView(true);", webelement);

WebDriverWait wait = new WebDriverWait(browser, 3);
WebElement webelement = wait.until(ExpectedConditions.elementToBeClickable(By.xpath(xpath)));
webelement.click();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM