无法将数据放入表格元素。找不到此类元素弹出错误

时间:2019-04-10 02:16:48

标签: java selenium selenium-webdriver selenium-chromedriver

尝试在表元素(单元格)中发送数据。验证过的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

2 个答案:

答案 0 :(得分:0)

在“ action.doubleClick(md61).perform()”之后,从框架切换到默认内容,然后再次切换到可用的iframe。

要移回父框架,可以使用switchTo().parentFrame(),或者如果要回到主框架(或大多数父框架),则可以使用switchTo().defaultContent();

答案 1 :(得分:0)

由于打开了新窗口并且脚本无法找到元素,因此问题仍然存在。解决方案是切换到新打开的窗口以查找元素定位器。

ArrayList选项卡=新的ArrayList(driver.getWindowHandles()); driver.switchTo()。window(tabs.get(1));