2016-12-27 29 views
1

我是Selenium和Java中的新成員,我在使用硒(java)的自動化測試項目中工作,今天我遇到了一個與有關的問題driver.findElement,元素我想查找是由JavaScript創建的,我確定要使用WebDriverWait等待目標元素呈現,即使我使用thread.sleep並等待它幾分鐘,但webdriver仍然無法找到該元素。找到使用selenium webdriver javascript創建的元素

這是我的問題,在html/js代碼中我有一個按鈕,單擊此按鈕javascript將創建一個div,我需要使用硒來定位它以使Automatio Testing工作。

點擊一個按鈕後,JavaScript卻使一個div樣子:

<div id="zm-view-frame" class="fade in"><div class="zm-view-header"><div class="zm-view-back"><a onclick="WFLandingpage.closePreview();" id="zm-view-close" class="button" href="javascript:void(0);"><span>Close</span></a></div><div id="zm-view-button"><a href="javascript:void(0);" onclick="WFLandingpage.showDesktop(this)" class="zm-display-desktop"><span>Desktop</span></a><a href="javascript:void(0);" onclick="WFLandingpage.showTablet(this)" class="zm-display-tablet"><span>Tablet</span></a><a href="javascript:void(0);" onclick="WFLandingpage.showMobile(this)" class="zm-display-phone"><span>Mobile</span></a><a href="javascript:void(0);" onclick="WFLandingpage.rotateView()" class="zm-display-rotate"><span>Rotate</span></a></div></div><iframe id="zm-display-iframe" src="page=mvc_landingpages&amp;act=templatepage&amp;preview=1&amp;templateId=landingpage3" style="padding-top: 63px; margin: 0px auto;" scrolling="yes" width="100%" height="609"></iframe></div> 

然後,在Java代碼中我寫道:

this.wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("zm-view-frame"))); 

然後:

Tester.Browser.findElement(By.id("zm-view-frame")).click(); 
當然

,我已經定義了this.wait

public WebDriverWait wait = new WebDriverWait(Tester.Browser, 100); 

,我也得到一個等待超時異常

我甚至用許多類型的通過例如XPath,CSS選擇器,類...但仍沒有運氣。

我還使用Selenium IDE for firefox來獲取元素,將其導出到java代碼並在我的編輯器中查看,然後執行相同的操作,但它對我來說不再適用。

我真的停留在這,你能給我一些幫助嗎?

對不起,我的英語不好,非常感謝!

更新 - 這是我的HTML結構: html structure

更新 - 我發現錯誤,有一個解決方案

原因:上面的代碼之前,我有代碼的幾行檢查一個iframe可用,代碼如下:

this.wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(locator)); 

我不知道該代碼讓驅動程序切換到ifra我,所以我上面的代碼找到元素是在錯誤的地方(上下文)。

解決方案:所以我需要回defaut上下文(回父母),我的代碼這樣的:

Tester.Browser.switchTo().defaultContent(); 

許多感謝到@Naveen提醒我要檢查這種情況下:)。

+0

檢查您要查找的元素是否在框架元素內,即您的元素是'