尝试在表元素(单元格)中发送数据。验证过的ID,Xpath,CssSelector以及它们都不是错误的,即使超时也要加载页面。甚至验证了iFrame(已经切换到当前的iFrame)。
没有找到这样的元素,每次都不会弹出错误。不确定页面加载后是否需要再次切换到iFrame吗?
我尝试了所有可能的方法,但没有通过。我非常感谢任何建议或思考的新方向。
先谢谢您。
运行我的脚本以更好地了解失败的地方。
public class SapDijon
{
WebDriver driver;
JavascriptExecutor jse;
public static void main(String[] args) throws Exception
{
SapDijon sapObj = new SapDijon();
sapObj.invokeBrowser();
sapObj.initializeSapDijon();
sapObj.ForecastME59();
}//End of Main
public void invokeBrowser()
{
System.setProperty("webdriver.chrome.driver", "U:\\Research Paper\\Selenium\\Drivers\\Chrome\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().deleteAllCookies();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS);
}
public void initializeSapDijon() throws Exception
{
Thread.sleep(1200);
driver.get("http://dijon.cob.csuchico.edu:8041/sap/bc/gui/sap/its/webgui/?");
driver.findElement(By.id("sap-user")).sendKeys("H5");
Thread.sleep(1200);
driver.findElement(By.id("sap-password")).sendKeys("Onsjhjsa1087");
Thread.sleep(1200);
driver.findElement(By.id("sap-client")).clear();
Thread.sleep(1200);
driver.findElement(By.id("sap-client")).sendKeys("485");
Thread.sleep(1200);
driver.findElement(By.id("LOGON_BUTTON")).click();
}
public void ForecastME59() throws InterruptedException
{
driver.switchTo().frame("ITSFRAME1");
Thread.sleep(800);
driver.findElement(By.xpath("//td[@id='tree#105#4#1']//span[@class='lsSTStatusImg lsMirrorRtl lsSTStatusIcon urSTExpClo urCursorClickable']")).click();
Thread.sleep(800);
Actions action = new Actions(driver);
WebElement md61 = driver.findElement(By.xpath("//span[@id='tree#105#6#1#1#i']"));
action.doubleClick(md61).perform();
driver.findElement(By.id("M0:46:::4:2-imgSymb")).click();
driver.findElement(By.id("M0:46:::4:26")).sendKeys("HH-F");
driver.findElement(By.id("M0:50::btn[0]")).click();
Thread.sleep(6000);
driver.manage().timeouts().pageLoadTimeout(4, TimeUnit.SECONDS);
driver.findElement(By.xpath("//span[@id='tbl5732[1,8]_c-r']/input[@id='tbl5732[1,8]_c']")).click();
driver.findElement(By.xpath("//span[@id='tbl5732[1,8]_c-r']/input[@id='tbl5732[1,8]_c']")).sendKeys("100");
}
}//End of Class
答案 0 :(得分:0)
在“ action.doubleClick(md61).perform()
”之后,从框架切换到默认内容,然后再次切换到可用的iframe。
要移回父框架,可以使用switchTo().parentFrame()
,或者如果要回到主框架(或大多数父框架),则可以使用switchTo().defaultContent();
答案 1 :(得分:0)
由于打开了新窗口并且脚本无法找到元素,因此问题仍然存在。解决方案是切换到新打开的窗口以查找元素定位器。
ArrayList选项卡=新的ArrayList(driver.getWindowHandles()); driver.switchTo()。window(tabs.get(1));