Как обрабатывать собственное окно при нажатии для загрузки файла с помощью Selenium WebDriver в браузере Edge - PullRequest
0 голосов
/ 24 апреля 2020

Я разрабатываю инструмент для автоматизации тестирования, например, селен. Итак, в основном во время записи я могу загрузить файл из файловой системы, но во время воспроизведения, выбрав файл и загрузив, это создает проблему. Это застряло, и позже это говорит тайм-аут. Я могу воспроизводить во всех браузерах, кроме только 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;
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...