Java 代码,有时有效,有时无效。不同的错误消息

Java 代码,有时有效,有时无效。不同的错误消息,java,internet-explorer,webdriver,webtest,Java,Internet Explorer,Webdriver,Webtest,我有以下问题,在执行登录后,系统加载主页,这就像5秒钟完成一样,因此在此之后,脚本应键入3个字段并执行选项卡以获取更多信息,但问题是有时有效,有时无效,在5次机会中,只有一次有效,我不知道这是否是获取所有字段的时间或类似的时间,我使用IE9,因为该应用程序只在IE上工作 代码如下: ` 以下是我得到的不同问题: 1) 找不到名为==txtOficina的元素 2) 元素不再有效 3) 找不到id==txtCveInc的元素(字段在那里) 4) 找不到名为==txtCveInc的元素(字段在那里)

我有以下问题,在执行登录后,系统加载主页,这就像5秒钟完成一样,因此在此之后,脚本应键入3个字段并执行选项卡以获取更多信息,但问题是有时有效,有时无效,在5次机会中,只有一次有效,我不知道这是否是获取所有字段的时间或类似的时间,我使用IE9,因为该应用程序只在IE上工作

代码如下: `

以下是我得到的不同问题:

1) 找不到名为==txtOficina的元素

2) 元素不再有效

3) 找不到id==txtCveInc的元素(字段在那里)

4) 找不到名为==txtCveInc的元素(字段在那里)

系统获取问题的步骤包括:

1) 登录(到目前为止还不错) 2) 系统加载主页面(该页面具有框架,并在5秒内获取所有字段…) 3) txtNumPolSol、txtNumofic和txtCveInc上的脚本类型(大多数问题在最后两个字段中) 4) 脚本执行一个选项卡 5) 系统将加载有关记录的一些信息,脚本将继续。。。 注意:几乎所有问题都发生在步骤3


谢谢你的反馈

这里的关键是在每个操作后添加至少1秒的隐式等待,即发送密钥等。这将允许“driver.findElement”有足够的时间来查找元素。尽管我建议将此代码保存在testBase或可重用方法中

driver.manage().timeouts().implicitlyWait(1,TimeUnit.SECONDS)


这将有助于减少您的网络测试的不稳定性。

这听起来像是一个时间问题。您的模拟用户正在以比页面准备就绪更快的速度进行操作。根据页面加载的时间,会出现不同的问题


解决方案是在触发DOM更改的步骤之后添加一个wait,而不是影响下一步,但不会导致WebDriver在返回之前等待。谷歌“webdriver wait for element”找到了很多方法。我也遇到了类似的问题,但我尝试用Css_选择器和X路径来查找元素,而不是ID,这对我来说很有效。

我看不到你在测试中试图查找名为
txtOficina
的元素。我看不到您试图在测试中找到名为
txtCveInc
的元素。元素不再有效是什么意思?如果是StaleElemenetReferenceException,则添加等待不会起任何作用。如果没有标记,我们将遇到问题,因为您显然正在与框架交互。最可能的问题是,您正在错误的框架中搜索元素。等待基于DOM中的更改的条件比放入定时等待要好。如果由于某些原因系统速度低于1秒,定时等待可能会失败。
System.setProperty("webdriver.ie.driver","C:\\Apps\\eclipse\\IEDriverServer.ex;
WebDriver driver = new InternetExplorerDriver();    
driver.get("http://15.192.41.95/Cabina/asp/Login.asp");
WebElement text1 = driver.findElement(By.id("text1"));
     text1.sendKeys("xxxx");
WebElement password1 = driver.findElement(By.id("password1"));
     password1.sendKeys("xxxx");    
WebElement aceptar = driver.findElement(By.id("ok1"));
     aceptar.click();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);    
driver.switchTo().frame(driver.findElement(By.name("menu")));
WebElement txtNumPolSol = driver.findElement (By.id("txtNumPolSol"));
    txtNumPolSol.sendKeys("877885");
WebElement Text8 = driver.findElement(By.name("txtNumofic"));
    Text8.sendKeys("228");          
WebElement txtCveInc = driver.findElement(By.name("txtCveInc"));
    txtCveInc.sendKeys("1");
WebElement clave = driver.findElement(By.id("txtCveInc"));
    clave.sendKeys(Keys.TAB);
driver.switchTo().frame(driver.findElement(By.name("dest")));
WebElement txtNomrepo = driver.findElement(By.id("txtNomrepo"));
    txtNomrepo.sendKeys("Jorge Villarreal");
driver.findElement(By.id("txtRelacion")).sendKeys("Conductor");
WebElement txtTelrepo = driver.findElement(By.id("txtTelrepo"));
    txtTelrepo.sendKeys("83029090");`