【发布时间】:2016-07-04 16:01:39
【问题描述】:
我正在尝试使用 Selenium Webdriver 自动化 Sharepoint 站点,但无法让我的代码识别新弹出窗口中的元素。
场景如下;在脚本中的某个位置,我们单击指向新布告栏项目的链接。将鼠标悬停在它上面会给我指针Javascript:OpenPopUpPage('/Lists/Noticeboard/NoticeboardNewFormMain.aspx')。单击链接时,会出现弹出窗口,并且父屏幕按预期禁用。
此时脚本会尝试识别弹出窗口中的第一个元素:
try{
element = driver.findElement(By.xpath("/html/body/form/div[4]/div[1]/div/div[1]/div[2]/div[2]/div[2]/table/tbody/tr/td/div/div/div/div/div[1]/span[1]/table/tbody/tr[2]/td/div[1]/div[3]/span[1]/input"));
}catch(Exception e){
Log.error(sRepositoryName + " | txt_Title not found | Exception desc : "+e.getMessage());
}
return element;
我已经使用 Firebug 检查了 xpath,这对于弹出窗口中的第一个对象是正确的。通过 xpath 我可以看到没有指定 iFrame,因此尝试 driver.switchTo().frame(1) 没有用。
我也尝试过使用driver.getwindowhandles(),但这只会返回一个窗口,所以没有什么可以切换的。
最后,我看到其他人认为这可能只是时间问题,因为在脚本检查它们时尚未创建弹出表单上的元素,所以我尝试使用Thread.sleep(15000) 为弹出窗口留出时间生成,但没有成功。
无论我尝试什么,对于弹出窗口中的所有元素,我仍然会遇到“无法定位元素”异常。有谁知道如何处理这些弹出窗口?
【问题讨论】:
标签: java selenium sharepoint selenium-webdriver popup