java - 无法将数据放入表格元素中。没有找到这样的元素错误弹出
问题描述
试图在表格元素(单元格)中发送数据。已验证 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
解决方案
在 " action.doubleClick(md61).perform()
" 之后从框架切换回默认内容并再次切换到可用的 iframe。
要移回父框架,您可以使用switchTo().parentFrame()
,或者如果您想返回主(或大多数父)框架,您可以使用switchTo().defaultContent();
推荐阅读
- c# - Azure Devops Visual Studio 测试任务无法发现具有 TestCaseSource 属性的 Nunit 测试
- mysql - 如何以最短的停机时间从 Azure Paas 回滚到 Iaas mssql?
- javascript - 如何在elasticsearch中聚合具有空数据和缺失字段的字段?
- python-3.x - 根据文本中的单词位置从字符串中过滤特定单词
- vb.net - 在保留标题行的同时对 ClosedXML 中的表进行排序
- python - 无法在 Windows 上使用 os.system() 调用 bash 脚本
- java - 如何避免在 Java 中针对这种情况进行类型转换
- google-apps-script - 创建未隐藏工作表 Google Script 的 PDF
- c++ - 使用 operator[] 和 operator int() 进行模棱两可的重载
- javascript - Javascrip 服务工作者 blob