Я разрабатываю инструмент для автоматизации тестирования, например, селен. Итак, в основном во время записи я могу загрузить файл из файловой системы, но во время воспроизведения, выбрав файл и загрузив, это создает проблему. Это застряло, и позже это говорит тайм-аут. Я могу воспроизводить во всех браузерах, кроме только Microsoft Edge. И это также должно работать для сценария отрицания, я имел в виду, что если данный файл не найден, он должен выдавать всплывающее сообщение о том, что файл не существует, но он должен давать результат в отчете в виде успеха, так как тестируемое приложение позволяет загрузить файл. Ниже приведены фрагменты кода -
publi c, класс WebDriverClick extends BaseWebDriverAction {
String xpath = "";
IActionResult result = null;
JavascriptExecutor js = null;
@Override
public IActionResult executeAction(IActionInput input) {
driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
js = (JavascriptExecutor)driver;
try {
// Get the Element's xpath from DOM
xpath=(String)js.executeScript("return document.rmotElementXpath"); //$NON-NLS-1$
switchToTheElementFrame();
theElement = driver.findElement(By.xpath(xpath));
// Perform click once element is found
result = executeClick(input);
driver.switchTo().defaultContent();
}
catch(Exception e){
result = ActionResult.failure().message(StatusMessage.TIMEOUT_WHILE_FIND).result();
return result;
}
driver.manage().timeouts().implicitlyWait(input.getTimeout(), TimeUnit.SECONDS);
return result;
}
public IActionResult executeClick(IActionInput input) {
IActionResult result = null;
if (theElement != null) {
// Selenium webdriver Issue
boolean useKeyAction = false;
BrowserInfo browser = input.getBrowserInfo();
if (BrowserInfo.INTERNET_EXPLORER64 == browser || BrowserInfo.INTERNET_EXPLORER == browser) {
Map<String, String> objectProperties = input.getObjectProperties();
if (objectProperties.containsKey(IWebConstants.PROP_TAG) && objectProperties.get(IWebConstants.PROP_TAG).equalsIgnoreCase("area")) { //$NON-NLS-1$
useKeyAction = true;
}
}
/* Use the sendKeys action instead of the click one. Not sure but I guess this is because of the Dojo key listener attached to the element */
String dojoAttachedEvent = theElement.getAttribute(IWebConstants.PROPS_DOJO_ATTACH_EVENT_ATTRIBUTE_ID);
if (dojoAttachedEvent != null && dojoAttachedEvent.startsWith("onkey")) { //$NON-NLS-1$
useKeyAction = true;
}
if (useKeyAction) {
theElement.sendKeys(Keys.ENTER);
}
else {
Actions action = new Actions(driver);
//action.clickAndHold(theElement).perform();
//action.sendKeys(Keys.ENTER).click(theElement).perform();
//action.moveToElement(theElement).click(theElement).perform();
action.click(theElement).perform();
}
result = ActionResult.successResult();
}
else {
result = ActionResult.failure().message(StatusMessage.TIMEOUT_WHILE_FIND).result();
}
return result;
}
}