按钮类型是图像,附加了HTML代码中的相关代码。我输入了所有数据,然后单击立即申请按钮,它完全没有保存。但是当我尝试手动创建它时,它会在不到15秒的时间内保存。
请找到随附的屏幕截图。
相同的相关代码:
//Navigating to Quick Application
driver.get(QAurl);
Thread.sleep(15000);
driver.findElement(By.id("DdlSalesPerson")).sendKeys("Swamy m Kumara");
driver.findElement(By.id("TxtFName")).sendKeys("Kumar");
driver.findElement(By.id("TxtLName")).sendKeys("Swamy");
driver.findElement(By.id("TxtAddress")).sendKeys("434, Main Road, Somajiguda");
driver.findElement(By.id("TxtZip")).sendKeys("79081");
driver.findElement(By.id("TxtSSN1")).sendKeys("881");
Thread.sleep(15000);
driver.findElement(By.id("TxtSSN2")).sendKeys("72");
driver.findElement(By.id("TxtSSN3")).sendKeys("4365");
Thread.sleep(5000);
driver.findElement(By.id("TxtDayPhone1")).sendKeys("963");
driver.findElement(By.id("TxtDayPhone2")).sendKeys("210");
driver.findElement(By.id("TxtDayPhone3")).sendKeys("5478");
Thread.sleep(5000);
driver.findElement(By.id("ChkIAgree")).click();
driver.findElement(By.id("TxtSignature")).sendKeys("Kumar Swamy");
Thread.sleep(5000);
System.out.println("Entered all the required fields");
//Reading the value in the image.
WebElement element = driver.findElement(By.id(OR.getProperty("FP_SImg_ID")));
String src = ((JavascriptExecutor)driver).executeScript("return arguments[0].attributes['src'].value;", element).toString();
img =src.split("=");
System.out.println("Value retrieved from the Image source: "+img[1]);
driver.findElement(By.id(OR.getProperty("FP_TxtSImg_ID"))).sendKeys(img[1]);
Thread.sleep(5000);
driver.findElement(By.id("TxtEmailId")).sendKeys("abc@abc.com");
driver.findElement(By.name("BtnSubmit")).click();
Thread.sleep(35000);
System.out.println("Successfully Applied from the QuickApp");
立即应用按钮的HTML代码:
<input id="BtnSubmit" type="image" style="height:33px;width:121px;border-width:0px;"
onclick="javascript:return validateControls();" src="../Common/Images/HybridQA
/apply_now.png" title="Submit Here" tabindex="45" name="BtnSubmit">
任何帮助将不胜感激。
答案 0 :(得分:3)
你的代码中有1分25秒的Thread.sleep()......
删除所有thread.sleep(),如果您正在等待元素显示正确,请使用显式等待:
http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp
以上面链接的页面为例:
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));
查看ExpectedConditions类以查看selenium中构建的可用条件,如果它们不能满足您的需求,那么编写自己的预期条件就很简单了。
的 -------------------编辑------------------- 强> 的
对于记录,此答案是针对下面引用的原始问题(您可以查看原始问题的编辑历史记录以进行验证)。
使用Java中的Webdriver
单击“立即应用”按钮后需要很长时间才能保存点击“立即应用”按钮后,需要很长时间才能保存 Java中的Webdriver。我输入了所有数据,然后点击了Apply 现在按钮,它根本没有保存。但是当我尝试创造它时 手动,它在不到15秒的时间内保存。请找到 附加屏幕截图。
答案 1 :(得分:0)
这个问题可能有两个原因。
一个来自“立即申请”按钮的HTML代码,我可以看到它显示为“输入” id ='BtnSubmit'“,但在你的脚本中写成 'driver.findElement(By.name( “btnSubmit按钮”))上单击();'。 不应该是“driver.findElement(By.id(”BtnSubmit“))。click()”? '名字'必须是 替换为“id”。
在脚本结束时单击“BtnSubmit”,会话可能会在之后立即过期 你点击那个按钮。使用旧版本和新版本时,通常会发生此问题 selenium独立jar文件。请注意,您只使用最新版本,而不是 除了旧版本。
答案 2 :(得分:0)
使用此,
driver.findElement(By.id("TxtEmailId")).sendKeys(Keys.ENTER);
之后,
driver.findElement(By.id("TxtEmailId")).sendKeys("abc@abc.com");
和评论,
driver.findElement(By.name("BtnSubmit")).click();
所以你的代码看起来像,
driver.findElement(By.id("TxtEmailId")).sendKeys("abc@abc.com");
driver.findElement(By.id("TxtEmailId")).sendKeys(Keys.ENTER);
//driver.findElement(By.name("BtnSubmit")).click();
有时处理图像按钮很困难,因为在输入所有必填字段时会激活这些按钮。确保填写所有必填字段,然后在输入表单中的最后一个字段后按Enter键。首先尝试手动完成。不要点击按钮,而是按最后一个输入字段输入并使用相同的策略进行自动化。
更新:
使用您自己的代码并使用以下方法替换Thread.sleep()。
称之为,
waitForElementToBePresent(By.id("DdlSalesPerson"), 15000);
它等待你传递的下一个元素作为参数。如果找到则返回true,否则返回false。如果在给定时间内找到元素,它将立即返回true而不是等待给定时间。
public boolean waitForElementToBePresent(By by, int waitInMilliSeconds) throws Exception
{
WebDriver driver = getDriver();
int wait = waitInMilliSeconds;
int iterations = (wait/250);
long startmilliSec = System.currentTimeMillis();
for (int i = 0; i < iterations; i++)
{
if((System.currentTimeMillis()-startmilliSec)>wait)
return false;
List<WebElement> elements = driver.findElements(by);
if (elements != null && elements.size() > 0)
return true;
Thread.sleep(250);
}
return false;
}