2016-05-06 43 views
1

使用cssSelector,我可以找到一些具有id屬性的元素。例如:使DOM元素可見而沒有id屬性

li[id='header-mypage-top']>a 

並且使用來自Selenium 2(WebDriver)的isDisplayed(),它被發現爲true。

我的問題是點擊下面的一些鏈接,我可以使用xpath找到,但使用isDisplayed()發現false。

<li class="logout" data-action-url="www.xxx.co.jp/yyy"> 
    <a href="javascript:void(0)">ログアウト</a> 
</li> 

我試圖找到使用以下代碼:

List<WebElement> elements =  driver.findElements(By.xpath("//li[@class='logout']/a")); 
System.out.println("Logout item size: "+elements.size()); 

大小被示出爲1,但isDisplayed()返回false。

我如何使這個元素可見並能夠點擊它?

我正在使用PhantomJS 2.1.1。上述問題不會發生在Firefox上。

回答

0

這是我找到了解決辦法:

wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath("//li[@class='logout']/a"))); 
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//li[@class='logout']/a"))); 

利用上述兩種等待togather解決我的問題。

1

我想元素(在這種情況下,「註銷」)沒有正確加載與具體時間。所以,你可以使用如下明確的等待:

WebDriverWait wait = new WebDriverWait(driver, 15); 
     wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//li[@class='logout']/a"))); 
     boolean isLogoutDisplayed = driver.findElement(By.xpath("//li[@class='logout']/a")).isDisplayed(); 
     System.out.println("Is Logout displayed: " + isLogoutDisplayed); 
+0

我有WebDriverWait是這樣的:wait = new WebDriverWait(driver,120); –

+0

您可以嘗試使用以下xpath: // a [text()='ログアウト'] –

+0

嘗試過但同樣的錯誤。 –