2016-02-19 86 views
1

我用Java編寫的測試和莫名其妙硒不能與名0108找到元素的元素:硒沒有找到

<div id="appmngTabs"> 
<ul id="menu"> 
<li name="0101"> 
<li name="0102"> 
<li name="0103"> 
<li name="0104"> 
<li name="0105"> 
<li name="0106" class="activ"> 
<li name="0107"> 
<li name="0108"> 
<a onfocus="disableFocus()" onclick="focusTab('0108')" target="content" href="applMenu?mode=cnt&menu=EOB2B&uni=0108" name="0108">Interfacing</a> 
</li> 
<li name="0109"> 
<li name="0199"> 

我沒有看到這個HTML代碼什麼特別的東西,但硒不能點擊在上面。我曾嘗試:

driver.findElement(By.name("0108")).click(); 
driver.findElement(By.cssSelector("[name=0108]")).click(); 
driver.findElement(By.cssSelector("li[name=0108]")).click(); 

我已經試過這樣的組合:

driver.findElement(By.id("menu").name("0108")).click(); 

仍然一無所獲。難道我做錯了什麼?

UPDATE:框架:

<frame id="menu" noresize="" marginheight="0" marginwidth="0" scrolling="no" frameborder="0" name="menu" src="applMenu?menu=EOB2B"> 

更新2:幀/框架

<frameset framespacing="0" frameborder="0" rows="144,*"> 
<frame id="menu" noresize="" marginheight="0" marginwidth="0" scrolling="no" frameborder="0" name="menu" src="applMenu?menu=EOB2B"> 
<frame id="content" noresize="" marginheight="0" marginwidth="0" scrolling="auto" frameborder="0" name="content" src="applMenu?mode=cnt&menu=EOB2B"> 
</frameset> 

更新3:AJAX 有人告訴我,這個問題可能與裝載阿賈克斯,我加入了這個:

WebDriverWait wait = new WebDriverWait(driver, 35); 
wait.until(ExpectedConditions.presenceOfElementLocated(By.name("0108"))); 

但它也沒有幫助。

更新4:HtmlDriver與FireforDriver。 我已經在運行測試時使用了html驅動,但是我試過firefox驅動來查看真的發生了什麼,打開頁面後,出現錯誤文件無法打開出現,而使用硒ide,沒有問題 - 測試進行了精細。

我該怎麼辦?

+0

您是否收到任何錯誤? – alecxe

+0

是:「NoSuchElementException:無法定位元素」 –

+0

檢查元素是否在'iframe'內。 – alecxe

回答

-2

嘗試的XPath

driver.findElement(By.xpath("//*[@name='108']")) 

編輯:

如果你真的需要通過cssselector找到

driver.findElement(By.cssSelector("li[name=\"0108\"]")).click(); 

應該工作。

+1

你建議使用不同的方法使用相同的標識符 - 這不會做伎倆 – Andersson

+0

@安德森沒有理由downvote因爲這對我有用。 OP沒有提到他正在使用幀... – Frank

2

由於元素是frame開關將其裏面發出findElement()前:

driver.switchTo().frame("menu"); 
driver.findElement(By.name("0108")).click(); 

當你需要回到到主文檔的背景:

driver.switchTo().defaultContent(); 

請注意,在點擊子菜單之前,您可能還需要點擊菜單將其打開。

+0

現在它說:「無法定位幀...」 –

+0

@ k.horde好吧,可能是你有嵌套幀? – alecxe

+0

如果我理解正確,那麼是的。嵌套的框架是當你有一部分網站的變化,其餘是靜態的?對不起,我不是HTML主人:) –