Click update after dialog appears Robotframework - dialog

I'm testing a scenario where I click on a button and below dialog appears. It's only possible to click on 'Update'
I have put following in my test scenario:
Click Element jquery=a.newOrder
Click Element Link=Update
I receive following error message after running the test:
Element is not clickable at point (1023, 127.19999694824219). Other element would receive the click:
The only HTML code that is related to the Update is
Update
I also try to test this with alert but no alert is found...
Can someone explain me what I need to do?
Thanks!

Explaining your scenario :
When you click update, a pop will be shown. You have to add a Wait until page contains element in any of the elements in pop up and then wait for the element you need to click. After the element is visible and focus is on the element. Click the element. If you get error in this, try to add selenium timeout for command execution speed or add a sleep to check whether the element loads slowly.

Related

Check if a webelement is "clickable" before you click it - Selenium VBA

Forgive what is potentially an obscure question.
In the webtable displayed below the following code will click on the highlighted radio button and fire the JS associated with its "click" event.
Set myEle = ch.FindElementById("__M5_1_1_image")
myEle.Click
For reasons I will not bore you with, I am trying to write a function which will check if you can click on this (or another candidate webelement in the table) WITHOUT actually clicking on it as I do not want to fire the associated "click" event at this stage of the code. However, I do want to know that the webelement I have specified will not throw an error or produce no event when I do click it later.
I have tried .ClickAndHold and .ReleaseMouse as tests to see if the same potential errors are returned as with the use of .click, but this does not work. For example I can get a "Element not interactable error" with .click but no error with the other 2.
Going back to the webpage I notice that this (and all the other tables I want to apply this function to) change the mouse cursor from an arrow to a "pointing hand" graphic when you hover the mouse over the correct element (e.g. radio button image in this example). Hence, one method would be to look for the presence of the "mouseover" event in the list of event listeners for the specific webelement - as highlighted right lower pane of the image. Unfortunately I don't have any idea how to check the "event listeners" associated with a defined webelement using selenium and VBA. For example if I fire the mouseover event for a webelement would it return an error if no such event existed or would there merely be no action? I assume it is the later, so can anyone tell me if it is possible to query whether a specific event is associated on the webpage for a defined webelement?

Selenium/ python performing a click with browser.execute_script VS. normal click line

I wanted to click on something in a webpage so I used
WebDriverWait(browser, 30).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#styleguide-v2 > div.banner-container > a:nth-child(2)")))
except that it doesn't work in the background.I have to switch to the browser manually where it to be seen on my screen so that the code works properly.
Then I added this
x = WebDriverWait(browser, 30).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#styleguide-v2 > div.banner-container > a:nth-child(2)")))
browser.execute_script("arguments[0].click();", x)
now it works like charm, my question is what's the difference? I want to know what's happening behind this
the webpage https://www.imdb.com/title/tt0198781/
presence_of_element_located expected condition finishes and the program continues to the next call while the element already created but still not clickable and still not located on it's final position on the page and still not ready to accept regular click.
JavaScript click can handle this kind of click, however this doesn't really imitates real UI user action.
To mimic real user action you should use element_to_be_clickable expected condition and click the element only when it became clickable.
visibility_of_element_located didn't work because the element is not actually visible itself, so we had to use element_to_be_clickable expected condition.
It is also possible that element is covered by some other element during the page rendering when it is literally become clickable but the page is still rendered. In this case we have to add some hardcoded delay or to wait until the element covering the desired button is disappeared. this can be achieved by invisibility_of_element_located expected condition for the covering element.

Element not recognized

Working on Coded UI testing and for scripts developed using Record Capture and playback feature (ctrl +I).
The problem is when the page has sub-menus (e.g. I need to hover over menu link then click sub-menu). When I record and capture element using Ctrl+I and executed a script it recognizes, but when I ran the script for the second time the element gets changed and it's not recognized.
I have tried simple x path utility posted here but coudn't able to use this feature. What would be the problem for always element id's getting changed. How to resolve it ?
Are you sure it isn't a nested object?
See http://executeautomation.com/blog/how-to-identify-all-the-child-elements-within-a-page-in-coded-ui-test-cuit/
You could also try EnsureClickable()
There could few reasons behind not recognizing an element:
List item Element is not visible when you are trying to click on it.
If Type of Parent Element is e.g. winclient then it’s difficult in coded UI to identify its child elements.
There could various solutions, you can try:
First Click on Menu Item and then click on Sub Menu Item, if you are directly clicking on sub menu item in your recorded script, this will make sub menu element visible.
Also you can check the visibility from Coded UI Test Builder-> Add Assertion button then going to UI Control Map, then select the element in tree and click on Refresh. It will show if element is visible or not.
If Ids are changing, then you can various other properties like Name, ClassName, InnerText, ControlType, TagInstance, ControlName etc. whichever is supported by Element.

How to identify a button click in coded UI Customised code

In UIMAP.CS file in both the Recorded method and assertion method, I am not able to identify the button click.
Is there any way I can get hold of the button click event?
I am able to get hold the button in to a UITESTCONTROL variable but the options I was able to see are "exists", "enabled","name" etc...
I tried checking it with assertions too when I dragged the cross hair on to the clicked button , assertions are generated only for checking the existence,correctness of text and name but not the events occured on it..
Please help in this regard..
Please make sure that the Control/Object on which you want to use the Click operation is a button and not any Web Element or control which does not support the Click operation.
Once verified, you can do the following:
Record a New Session and while recording click on that button, stop your recording.
Open the UIMap.cs and navigate to that button control. The intellitrace would show you all the available options for that control.
Thanks
Nikhil

<a4j:include> content doesn't get change

This is what i want to achieve. I have navigation panel on left and content panel on right.
when user click links on left navigation panel , ajax calls made and content panel got rendered. With current implementation, content got change based on the link i clicked.
however i found content still don't get change when perform following steps:
1. click "display user", user list got display
2. click "add user" to add one user
3. click "display user", user list got display but content is same as the one in step 1.
i am sure data has been inserted into db.
looks like this view got cached on server. is there anyway to solve this issue?
following are my code and screenshot.
thank you,
i found answer from this link.
basically, use following line to destroy backing-bean, then problem solved.
FacesContext.getCurrentInstance().getExternalContext().getRequestMap().remove("wizardBean");
http://java.dzone.com/articles/jboss-richfaces-spring?page=0,6

Resources