Advise on location elements on a webpage I am buildong a selenium script for
Hi there, I am after some advice regarding a Selenium script I am building. As can be seen from the screenshot attached I am hovering over the ‘Reports’ text from the navigation pane which brings up a menu…..from there I am selecting ‘Asset Management’, then ‘Terminated Report: Completed’ from the sub-menu.
I’ve also attached the code (‘Selenium Code’
The issue I have had is that, as can be seen from Screenshot 1, I want to arrive at Asset Management > Terminated Report: Completed. After I have checked that page I want to go to Asset Management > Terminated Report: Pending. However, the XPath when selecting the ‘Asset Management’ option is now different, even thought the selection of it is the same as before. I’m assuming this is because I am selecting it from a different page. Based on the above, I have two questions which I am hoping for assistance on:
1) Given that it looks like XPath isn’t the best way of me navigating through this navigation menus, what would be the best element locator to use, in order to get to the desired location? Hopefully, the screenshots provide enough detail.
2) Another issue I have is that when I
Apologies for the long-winded questions, but I just wanted to make sure I explained it all correctly. Any help would be greatly appreciated.
First I would like to appreciate your effort you put to write this question beautifully. I wish everybody follow these standards, it easy for us to investigate.
Now coming back to you questions
Question 1 : Avoid using Absolute xpaths, always prefer relative xpaths. Please read this article, you will find your answers by your own:
Question 2: I think the only problem is with when you are clicking the ‘Terminate Report Complete‘. In your Page Object I can see that you are using action class for mouse hovering on this element to. But actually you do not need to mouse hover to click this element. So just change your Page Object of ‘TerminateReportCompleteFocus‘ function and directly use click() to perform click. I think by following this your second problem will also resolve.
Suggestion : Make use of FirePath tool of Firefox. It will automatically give you the absolute xpath.
Do not forget to close the question, if it resolve your issue.
many thanks for responding. I’ve managed to sort out the first issue, based on your comments.
However, I am still having the same issue with the second question I raised. I did what you suggested and removed the ‘mouse hover’ actions and instead directly used a ‘click()’. The issue is that I must initially hover over the ‘Report’ text in order to display the menu and sub-menu. I don’t actually want to click on ‘Report’, though’ as doing so will take me to a page I don’t want to go to, so the hover action has to be done. What now happens is that when I arrive at the ‘Terminated Report: Completed’ page the focus remains on the text from the drop-down menu, and I cannot switch the focus to the page in order to complete any actions.
I’ve attached a screenshot of the code snippet, which highlights the code changes I have made. Do you have any suggestions?
Thanks for the response, Laksh. Now I’ve re-run the selenium test I reckon the issue is to do with the element I am trying to select from the ‘Terminated Report: ‘Completed’ page. I’ve attached a screenshot of the page below; as you can see, there is a bar graph on the page…..for my test I want to select one of the bars which will then open up other functionality on the page. However, I am still having the problem where the focus is on the text from the drop-down, BUT……when I select another element from the page, e.g. the ‘Update Report’ button I am able to do so successfully. This suggests that there may be an issue with selecting functionality from the bar graph. It’s a bit odd as when I open up this page manually, I click on the bar graph once and it carries out the desired action…..however, when I use Selenium and click on the bar graph it doesn’t allow me to select it. As mentioned earlier, the focus remains on the drop-down option so this may be causing the issue, but it didn’t cause any problems when clicking on ‘Update Report’, which is a bit odd.
I’ve also attached the code I have written when I am trying to attempt to select one of the bars on the graph (see below)
Hope you can help.
I’ve now managed to work this out, by writing the below code:
public static void barChartSelector(InternetExplorerDriver driver)
WebElement parent = driver.findElement(By.className(“highcharts-series-group”));
List<WebElement> children = parent.findElements(By.tagName(“rect”));
Many thanks for your help