首页 > 解决方案 > 无法将数据放入表格元素中。没有找到这样的元素错误弹出

问题描述

试图在表格元素(单元格)中发送数据。已验证 ID、Xpath、CssSelector 和它们都不是错误的。甚至,将超​​时设置到页面加载。甚至验证了 iFrame(已经 switchTo current 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

标签: javaseleniumselenium-webdriverselenium-chromedriver

解决方案


在 " action.doubleClick(md61).perform()" 之后从框架切换回默认内容并再次切换到可用的 iframe。

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


推荐阅读