1

I have found several questions related to this one particular travel website MakeMyTrip, so I tried to automating it.

I was successful in selecting the primary details and getting on the Flight listings page.

I wanted to select the cheapest flight combination out of the available options. Now the website has an option, which always shows the lowest flight combination. I was hoping to use it to book the flight.

Flight Listings

Now, the way I thought was doing this-

  • Recognising that the cheapest Flights tab is present- using present_of_element_located expected conditions.
  • Clicking on the Book button to get to next page.

The issue I am facing is recognizing the Cheapest Flight tag. I tried to recognize it by xpath, but the test failed because it didn't find the element. I am using Firebug to check the xpath, and it comes as

//*[@id='content']/div/div[2]/div/div/div[3]/div[4]/a[2]

I also tried this xpath,

//div[@class='stk_btm_toptabs']//a[@class='stk_btm_chpFlight'][text='cheapest Flights']

but failed both times.

My question here is:

  1. Why did the Firebug generated xpath fail?
  2. Mistake in my xpath

Also I tried removing these checks to directly click on book button but it is also failing, probably because the tag comes a tad second after the page loads. And that is why I was thinking of waiting until the time the tag is loaded and visible on the page.

Here is the piece of code :

 WebDriverWait(driver,10).until(expected_conditions.presence_of_element_located((By.XPATH, "//div[@class='clearfix']//a[@class='stk_btm_chpFlight'][text='cheapest Flights']")))
 bookbtn=driver.find_element_by_xpath("//*[@id='content']/div/div[2]/div/div/div[3]/div[3]/div/div[2]/span/span[2]/a")
 bookbtn.click()
asked Jul 1, 2015 at 14:52
2
  • Have you tried any other element method than an xpath? Commented Jul 1, 2015 at 19:26
  • not as of now. I will be trying using CSS Commented Jul 2, 2015 at 2:25

1 Answer 1

1

Is your element placed inside an iFrame? If it's in iFrame, you should switch driver to that iFrame first and then try to access the element.

OR

You could also try accessing the element with

element = driver.findElement(By.cssSelector("div.clearfix.stk_btm_toptabs.text-center>a.stk_btm_chpFlight.active"));
IAmMilinPatel
7,7667 gold badges44 silver badges68 bronze badges
answered Jul 2, 2015 at 6:55
4
  • ok haven't thought about the iframe thing. how do i recognize if its in iframe or not. Commented Jul 2, 2015 at 6:57
  • thanks @scorpion the css selector worked. I have one more doubt regarding the button. I went through the css selector you mentioned and created one for the button- Commented Jul 2, 2015 at 14:05
  • div.col-xs-7>span.stk_btm_earnpoint.pull-right>a.btn.btn-lg.pull-right.btn-primary-red but it doesn't seem to work ? Any idea why Commented Jul 2, 2015 at 14:07
  • Could you please provide your HTML ? It's easier to help me understand your issue? Commented Jul 3, 2015 at 3:54

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.