Skip to main content

Selenium - Override javascript functions to ignore downloading process

I have got an issue with downloading process on IE 8. This browser blocks my automatic-download functionality on my app so that I could not work with my test case any more after that. In my case, I didn't care about the file is downloaded or not, I just focus on the result after downloading process finished successfully. Therefore, I found a solution to ignore this process so that I can work normally.

I use Primefaces, here is the remote command to trigger the download process

<p:remoteCommand name="cmdGenerateDocument" actionListener="#{logic.onGenerateDocument}" update="xrflDocumentCreationPanel" oncomplete="clickDownloadButton();"/>

The following is my test case:
@Test
 public void shouldUpdateStep6ToWarningIfStep1IsValidAfterFinished(){
  MainPage mainPage = new MainPage();
  waitForLoading(mainPage.getDriver());
  
  EmployeeDetailPage empDetailPage = new EmployeeDetailPage();
  waitForLoading(empDetailPage.getDriver());
  empDetailPage.fillDataForAllFields();
  
  mainPage.clickNext();
  waitForLoading(mainPage.getDriver());
  
  mainPage.clickNext();//move to step 3
  waitForLoading(mainPage.getDriver());
  
  mainPage.clickNext();//move to step 4
  waitForLoading(mainPage.getDriver());
  
  mainPage.clickNext();//move to step 5
  waitForLoading(mainPage.getDriver());
  
  //avoid issue with download automatically on IE8
  mainPage.ignoreDownloadProcess(); 
  
  mainPage.clickNext();//move to step 6
  waitForLoading(mainPage.getDriver());
  
  mainPage.jumpToEmployeeDetailTab();
  waitForLoading(mainPage.getDriver());
  
  empDetailPage.setEmptySalutaion();
  waitForLoading(mainPage.getDriver());
  
  mainPage.jumpToDocumentCreationTab();
  waitForLoading(mainPage.getDriver());
  
  assertTrue(mainPage.isRequriedFinishedAllStepsMessageShown());
  assertTrue(mainPage.isRequriedMessageShownOnStep1());
  assertTrue(mainPage.isStep6Warning());
 }

The content of function "ingnoreDowloadProcess()"
public void ignoreDownloadProcess() {
  String script = "clickDownloadButton = function(){};";
 ((JavascriptExecutor) getDriver()).executeScript(script);
}

Comments

Popular posts from this blog

JSF, Primefaces - Invoking Application Code Even When Validation Failed

A use case I have a form which has requirements as follow: - There are some mandatory fields. - Validation is triggered when changing value on each field. - A button "Next" is enable only when all fields are entered. It turns to disabled if any field is empty. My first approach I defined a variable "isDisableNext" at a backend bean "Controller" for dynamically disabling/enabling the "Next" button by performing event "onValueChange", but, it had a problem: <h:form id="personForm"> <p:outputLabel value="First Name" for="firstName"/> <p:inputText id="firstName" value="#{person.firstName}" required="true"> <p:ajax event="change" listener="#{controller.onValueChange}" update="nextButton"/> </p:inputText> <p:outputLabel value="Last Name" for="lastName"/> <p:i...

Junit - Test fails on French or German string assertion

In my previous post about building a regex to check a text without special characters but allow German and French . I met a problem that the unit test works fine on my machine using Eclipse, but it was fail when running on Jenkins' build job. Here is my test: @Test public void shouldAllowFrenchAndGermanCharacters(){ String source = "ÄäÖöÜüß áÁàÀâÂéÉèÈêÊîÎçÇ"; assertFalse(SpecialCharactersUtils.isExistSpecialCharater(source)); } Production code: public static boolean isExistNotAllowedCharacters(String source){ Pattern regex = Pattern.compile("^[a-zA-Z_0-9_ÄäÖöÜüß áÁàÀâÂéÉèÈêÊîÎçÇ]*$"); Matcher matcher = regex.matcher(source); return !matcher.matches(); } The result likes the following: Failed tests: SpecialCharactersUtilsTest.shouldAllowFrenchAndGermanCharacters:32 null A guy from stackoverflow.com says: "This is probably due to the default encoding used for your Java source files. The ö in the string literal in the J...

Google I/O 2017 Notes

WOW! How meaningful this below video explains about the name of  "I/O". Sundar Pichai talked a lot of Machine Learning Machine Learning is a very hot trend these days. Google uses it for their products. Google Assistant: Easily booking an online meal by talking with Google Assistant like a staff of partners, for example. Google Home: Hands-free calling. Google Photos: sharing suggestion, shared library, photo books and google lens. Youtube: 360 degree video, live stream. Kotlin became an official programming language for Android https://kotlinlang.org I'm on the way to Kotlin! ^^ Reference: [1]. https://www.youtube.com/watch?v=Y2VF8tmLFHw

My must-have apps for daily work

There is no doubt that cool apps can help us be more productive and enjoyable at work. For the time being, I really love the following apps which are used by me almost every day. 1. A personal Kanban In fact, a personal kanban is the most useful app for me. Why does it matter? It is not just a to-do list, but it keeps me motivated every day because it helps me be able to know what my "big picture" is. I usually set up my plans together with a path to reach them.  KanbanFlow  is my preferred tool. KanbanFlow 2. A terminal Needless to say, a terminal is a must-have app for every developer, especially the ones use macOS/Linux. Due to its importance, I love to decorate and enhance it to be super exciting with various tools such as  iTerm ,  oh-my- zsh , and  thefuck . ;) iTerm + oh-my-zsh 3. A documentation "ecosystem" As a developer, I can not remember all things that I have experimented a day. Moreover, a document is really useful for sharing an...