2016-09-04 2 views
0

См. Ниже фрагмент кода. Я хочу щелкнуть пункт меню «Управление учетными записями», функция Java не вернулась. Пункт меню был показан & Я мог бы вручную щелкнуть.Пункт меню не нажимает Selenium WebElement

<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; 
} 
+1

В чем содержание 'xpath'? – Guy

+0

String acctManagementTagPath = "// * [@ id = \" nav307 \ "]/ul/li [2]/a/span"; – Charlie

+0

Я просто немного изменился. Функция DID NOT RETURN. Xpath действительно скопирован из Chrome. Мой html-код был просто упрощен. – Charlie

ответ

0

Попробуйте щелкнуть по тексту 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(); 
Смежные вопросы