Java Selenium WebDriver和Robot:使其在自动上传文件时集中在正确的浏览器上
我试图在我的网站上引发一个错误,您试图从本机上载窗口向对象添加许多图像(sendKeys在这种情况下不起作用;它不会引发错误)。五次中有一次,它会做预期的事情——添加太多图片。其他时候,它会进行点击,但会在错误的浏览器中进行,甚至只是在Eclipse中 这是我的。此代码段将让您登录并转到添加项Java Selenium WebDriver和Robot:使其在自动上传文件时集中在正确的浏览器上,java,selenium,automated-tests,awtrobot,Java,Selenium,Automated Tests,Awtrobot,我试图在我的网站上引发一个错误,您试图从本机上载窗口向对象添加许多图像(sendKeys在这种情况下不起作用;它不会引发错误)。五次中有一次,它会做预期的事情——添加太多图片。其他时候,它会进行点击,但会在错误的浏览器中进行,甚至只是在Eclipse中 这是我的。此代码段将让您登录并转到添加项 public void addItemMoreThan10Images() throws AWTException{ Robot robot = new Robot(); WebDri
public void addItemMoreThan10Images() throws AWTException{
Robot robot = new Robot();
WebDriverWait wait = new WebDriverWait(driver, 20);
driver.manage().window().maximize();
driver.get("https://example.com/login");
loginClass login = new loginClass(driver);
driver.switchTo().frame(0);
login.VerifyLoginUser();
login.typeUserName("example");
login.typePassword("example");
login.clickOnLoginButton();
wait.until(ExpectedConditions.elementToBeClickable(login.profileInfo));
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//span[contains(text(),'New Item')]")));
driver.findElement(By.xpath("//span[contains(text(),'New Item')]")).click();
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("/html/body/div[1]/div/div/item-wizard/div/div/form/div[3]/input")));
driver.findElement(By.xpath("//h4[@class='PhotoTxt margClear']")).click();
然后,这就是有趣的事情发生的地方
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
robot.keyPress(KeyEvent.VK_SHIFT);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
robot.keyPress(KeyEvent.VK_DOWN);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
robot.keyPress(KeyEvent.VK_DOWN);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
robot.keyPress(KeyEvent.VK_DOWN);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
robot.keyPress(KeyEvent.VK_DOWN);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
robot.keyPress(KeyEvent.VK_DOWN);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
robot.keyRelease(KeyEvent.VK_SHIFT);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
robot.keyPress(KeyEvent.VK_TAB);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
robot.keyPress(KeyEvent.VK_ENTER);
@Test(priority=1)
public void testAddItemMoreThan10Images()
{
try {
addItemMoreThan10Images();
} catch (AWTException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
因此,这段代码会点击,但在大多数情况下不会在正确的位置点击。有没有人对如何实现这一目标有什么建议
提前谢谢 这段代码非常“朋克”:-)乍看之下,缺少一些keyRelease事件。谢谢你的提示!我会再试试看