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>
如果您在開發人員控制檯上手動執行這些步驟,是否能夠獲得正確的工作流程? – Hackerman
第一個建議總是一樣的:在點擊它之前嘗試等待你的元素。即代替'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();' –
檢查driver.findElement(By.xpath(「html/body/div [3]/a [2 ] /字體「))點擊();我懷疑它是否點擊鏈接。 – ChanChow