2016-08-11 97 views
0

我正在使用Selenium JAVA。下面的代碼生成錯誤:多窗口處理

Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"name","selector":"p_subj_code"} Command duration or timeout: 167 milliseconds.

這裏是我的代碼應該做的:

  • 打開應用程序
  • 搜索過程
  • 點擊課程
  • 點擊複製課程鏈接
  • 打開一個新窗口
  • cli ck在元素上(這是一個下拉菜單),並在其中輸入值。

我收到錯誤,當它打開一個新窗口,然後它無法找到該元素。

我的Java代碼:

driver.findElement(By.xpath("//a[contains(text(),'Course Outline Editor')]")).click(); 

//Search the course 
driver.findElement(By.xpath("//input[@value='Submit']")).click(); 
driver.findElement(By.xpath("//select[@id='majr_code_id']")).sendKeys("BMSC"); 
//Enter values for course 

driver.findElement(By.xpath("//input[@name='p_crse_numb_low']")).sendKeys("234"); 

//Enter values for course 
driver.findElement(By.xpath("//input[@name='p_submit_button']")).click(); 

//Submits the search 
driver.findElement(By.xpath("//a[contains(text(),'BMSC 234')]")).click(); 

//Brings up the course 
String winHandleBefore = driver.getWindowHandle(); 
System.out.println("Window title" + driver.getTitle()); 
driver.findElement(By.xpath("html/body/div[3]/a[2]/font")).click(); 

//Click the link to open a new page 
driver.findElement(By.name("p_subj_code")).click(); 

//(Opens a new page) 
driver.findElement(By.xpath(".//*[@id='majr_code_id']/option[2]")).click();  
driver.findElement(By.xpath("//input[@id='p'_crse_numb']")).sendKeys("111"); 
driver.findElement(By.xpath("//input[@value='Find']")).click(); 

對應的HTML代碼:

<caption class="captiontext">Find Course to Copy from</caption> 
<tbody> 
<tr> 
<td class="dedefault"/> 
</tr> 
<tr> 
<td class="delabel" width="120" scope="row">Subject Code:</td> 
<td class="dedefault" width="100" colspan="3"> 
<p class="leftaligntext"> 
<select id="majr_code_id" size="1" name="p_subj_code"> 
<option value="">Select </option> 
<option value="ACCY">ACCY </option> 
+0

如果您在開發人員控制檯上手動執行這些步驟,是否能夠獲得正確的工作流程? – Hackerman

+1

第一個建議總是一樣的:在點擊它之前嘗試等待你的元素。即代替'driver.findElement(By.name(「p_subj_code」))。click(); 'do'WebDriverWait wait = new WebDriverWait(driver,10); wait.until(ExpectedConditions.elementToBeClickable(By.name(「p_subj_code」)))。click();' –

+0

檢查driver.findElement(By.xpath(「html/body/div [3]/a [2 ] /字體「))點擊();我懷疑它是否點擊鏈接。 – ChanChow

回答