2017-04-27 122 views
-1

我想找到一個網頁登錄,但我不能做同樣的元素不可見 - 獲取Nosuchelement例外。selenium - 無法找到登錄

我嘗試使用下面的代碼,但每次我得到異常。 WebDriverWait等待=新的WebDriverWait(驅動程序,30); wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath(「html/body/form/table/tbody/tr [3]/td [2]/input」))); (「html/body/form/table/tbody/tr [3]/td [2]/input」))。sendKeys(「admin」);

任何人都可以請在這幫助我。

由於HTML代碼的頁面是: -

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
     <title>Retail-J</title> 
    </head> 


    <frameset name ="mainFrameset" id ="mainFrameset" rows="55,*" frameborder="1" framespacing="2" border="2" bordercolor="#000000"> 
     <frame name="titleFrame" src="title.jsp" marginheight="0" marginwidth="0" noresize="noresize" scrolling="no"> 
     <frameset name="innerFrameset" id="innerFrameset" cols="20.0%,*" frameborder="0" border="0" framespacing="0" > 
      <frame name="contentFrame" src="dynamicContents.jsp" marginheight="0" marginwidth="0" noresize="noresize" target="mainFrame" scrolling="auto"> 
      <frame name="mainFrame" src="Welcome.jsp" marginheight="0" marginwidth="0" scrolling="auto"> 
     </frameset> 
     <noframes> 
      <body bgcolor="#FFFFFF" text="#000000" topmargin="0" leftmargin="0"> 
      Sorry your browser does not support framesets. 
      </body> 
     </noframes> 
    </frameset> 
</html> 
+0

請在下面找到該代碼段: - –

回答

0

的問題是有點含糊,你不提供相關的DOM的任何例子;不過,您可以從驗證目標元素是否對瀏覽器實際可見開始。某些時候,登錄元素被隱藏,並且僅在用戶操作時出現(如鼠標點擊或鼠標懸停)。 硒有幾個功能,可以讓您呈現元素可見(請參閱here)。如果沒有其他東西似乎可以工作,則可以使用Javascript executor來查找元素並將其返回以供使用,儘管這不是一種好的做法。

+0

頁面源代碼顯示爲 –

0

NoSuchElement異常意味着您的定位器不正確。嘗試下面的東西:

  1. 嘗試使用ID,名稱或XPATH查找元素。確保定位器是唯一的?
  2. 檢查元素是否在iframe/frame中?
  3. 等待元素可見性。

讓我知道它是否適合你。

+0

請查看網頁的HTML代碼 –

+1

因此,您的元素在框架內。請先切換內部框架(框架名稱=「contentFrame」),然後與輸入框交互。 – Shailendra