[英]Selenium does not find an element
我正在用Java寫測試,因此Selenium無法找到名稱為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代碼中看不到任何特別之處,但Selenium無法單擊它。 我嘗試過的
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();
依然沒有。 難道我做錯了什么?
更新:框架:
<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我被告知問題可能與加載Ajax有關,我添加了以下內容:
WebDriverWait wait = new WebDriverWait(driver, 35);
wait.until(ExpectedConditions.presenceOfElementLocated(By.name("0108")));
但這也沒有幫助。
更新4:HtmlDriver與FireforDriver。 我在運行測試時使用了html驅動程序,但是我嘗試使用Firefox驅動程序來查看真正的happeinig,打開頁面后,出現無法打開錯誤文檔的情況 ,而使用硒離子時,沒有問題-測試正常。
我該怎么辦?
由於該元素在frame
, 因此在發出findElement()
之前切換到它 :
driver.switchTo().frame("menu");
driver.findElement(By.name("0108")).click();
當您需要返回主文檔的上下文時:
driver.switchTo().defaultContent();
請注意,在單擊子菜單之前,您可能還需要單擊菜單以將其打開。
通過XPath嘗試
driver.findElement(By.xpath("//*[@name='108']"))
編輯:
如果您真的需要通過cssselector查找
driver.findElement(By.cssSelector("li[name=\"0108\"]")).click();
應該管用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.