Here is the Html code <document> <html> <head> <body> <main> <div class="content-wrap"> <!--Header--> <header> <nav id="airtelMegaMenu" class="navbar navbar-default dropdown"> <div class="container-fluid text-right top-smal-menu"> <div class="container-fluid large-menu"> <!-- ==== Label 2 Menus for desktop ==== --> <!-- mega-menu-pay-recharge --> <section id="mega-menu-pay-recharge" class="mega-menu-container mega-menu-pay-recharge mega-menu-open"> <a class="mega-menu-close close" href="javascript:void(0);"> <article> <div class="mega-dropdown-menu"> <!-- ==== Label 2 Menu || Sub Menu for Pay and recharges ==== --> <ul> <li> <li class="link-active"> <a module-id="common" data-i18n="pay_bill" href="javascript:void(0);"> Pay Bill</a> <!-- ==== Label 3 Menu || Sub Menu for Pay bill ==== --> <ul> </li> <li class=""> <li class=""> </ul> </div> </article> </section> <!-- mega-menu-pay-recharge End--> <!-- mega-menu-get--> <section id="mega-menu-get" class="mega-menu-container mega-menu-get"> <!-- mega-menu-get --> <!-- mega-menu-BANK WITH US--> <section id="mega-menu-bank" class="mega-menu-container mega-menu-bank"> <!-- mega-menu-BANK WITH US--> <!-- ==== Label 2 Menus for desktop ==== --> <!-- ==== Label 2 Menus for Mobile ==== --> <!-- Mobile mega menu--> <div id="mobile-mega-menu"> <!-- mega-menu-Bank-mobile --> <section id="mega-menu-pay-recharge" class="mega-menu-container mega-menu-bank-mobile"> <a class="mega-menu-close back visible-sm visible-xs" href=" javascript:void(0);"> <article> <div class="mega-dropdown-menu"> <ul> <li> <li class="link-active"> <a module-id="common" data-i18n="savings_account" href="javascript:void(0);" >Savings Account</a> <ul> </li> <li> </ul> </div> </article> </section> <!-- mega-menu-Bank-mobile--> <!-- mega-menu-pay-bill-mobile --> <section class="mega-menu-container mega-menu-pay-bill"> <section class="mega-menu-container mega-menu-recharge"> <!-- mega-menu-pay-bill-mobile End--> <!-- mega-menu-Add-money --> <section class="mega-menu-container mega-menu-add-money"> <!-- mega-menu-Add-money End--> <!-- mega-menu-Get for me--> <section class="mega-menu-container mega-menu-get-for-me"> <!-- mega-menu-Get for me End--> <!-- mega-menu-for-home-mobile --> <section class="mega-menu-container mega-menu-get-for-home"> <!-- mega-menu-for-home-mobile End--> <!-- mega-menu-exciting-offers-mobile --> <section class="mega-menu-container mega-menu-exciting-offers"> <!-- mega-menu-exciting-offers-mobile End--> <!-- mega-menu-Bank with us mobile --> <section class="mega-menu-container mega-menu-savings-account"> <!-- mega-menu-Bank with us mobile End--> <!-- mega-menu-money-wallet mobile --> <section class="mega-menu-container mega-menu-money-wallet"> <!-- mega-menu-money-wallet mobile End--> </div> <!--Mobile mega menu--> <!-- ==== Label 2 Menus for Mobile End==== --> </nav> </header> <div itemtype="http://schema.org/WebSite" itemscope=""> <section class="banner padding-top-0 padding-bottom-0 airtel-app bg-white home-banner overflow-hidden airtelwow animated"> <div class="airtelwow animated"> <div class="flex-container airtelwow"> <div class="flex-container bg-white airtelwow"> <div class="airtelwow"> <div class="flex-container bg-white airtelwow"> <div class="flex-container bg-white airtelwow"> <!--footer--> <footer> </div> </main> <script async="" src=" app/libs/edited/homepage/airtel-jqlite.js?version=1490500432236"/> <script async="" src=" app/libs/edited/homepage/lazyloading.js?version=1490500432236"/> <script type="text/javascript">var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-35987772-1']); _gaq.push(['_setDomainName', 'airtel.in']); _gaq.push(['_setAllowLinker', true]); _gaq.push(['_setAllowAnchor', true]); _gaq.push(['_addIgnoredRef', 'airtel.in']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; //ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js'; ga.src = ('app/libs/edited/homepage/dc.js?version=1490500432236'); var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();</script> <script type="text/javascript"/> </body> </html> </document>
On Monday, March 27, 2017 at 2:13:16 PM UTC-7, Titus Fortner wrote: > > I'd need to see the html to see why it works for one of the locator > strategies, but not the other. > > On Mon, Mar 27, 2017 at 1:21 PM, Raja gopalan <[email protected] > <javascript:>> wrote: > >> Here is the code >> >> >> >> require 'watir' >> class AirTelRecharge >> def initialize >> caps = Selenium::WebDriver::Remote::Capabilities.firefox(marionette: >> false) >> @b=Watir::Browser.new :firefox, desired_capabilities: caps, profile: >> "default" >> @b.goto "https://www.airtel.in/" >> @[email protected] >> @driver.manage.timeouts.implicit_wait=10 >> end >> >> def execute >> @b.element(:text, 'Pay & Recharge').click >> @driver.find_element(:link,'Recharge').click #Here is the problem this >> code doesn't work for @b.element(:text,'Recharge').click >> end >> end >> >> AirTelRecharge.new.execute >> >> >> >> On Monday, March 27, 2017 at 8:48:37 AM UTC-7, Titus Fortner wrote: >>> >>> Those two locators should find the same element, but it appears it is >>> not if one says the element exists but is not visible and the other says it >>> is visible. To figure out why it is finding a different element, I'd need >>> to see the underlying html. >>> >>> >>> On Sunday, March 26, 2017 at 11:38:52 PM UTC-5, Raja gopalan wrote: >>>> >>>> Link is clearly visible to click >>>> >>>> If I write >>>> >>>> @b.link(:text,'Recharge').click >>>> >>>> WATIR converts this code into >>>> >>>> @driver.find_element(:xpath,"//a[normalize-space()='Recharge']").click >>>> >>>> but this selenium code says that element is not visible, So it's not >>>> working. >>>> >>>> If I write the following selenium code >>>> >>>> @driver.find_element(:link,'Recharge').click >>>> >>>> It works properly. >>>> >>>> Do you understand me now? >>>> >>>> >>>> >>>> On Sunday, March 26, 2017 at 3:05:51 PM UTC-7, Titus Fortner wrote: >>>>> >>>>> Is Watir finding a different link? Or is Selenium just allowing the >>>>> user to click a link that is not displayed? >>>>> >>>>> There are definitely ways that Watir can optimize its locator >>>>> strategies, but that part of the code is not trivial to dig into. As >>>>> always, pull requests are welcome. >>>>> >>>>> On Sun, Mar 26, 2017 at 12:18 PM, Raja gopalan <[email protected]> >>>>> wrote: >>>>> >>>>>> >>>>>> I have written the following selenium code to click this link >>>>>> >>>>>> @driver.find_element(:link,'Recharge').click >>>>>> >>>>>> It successfully clicks the line >>>>>> >>>>>> >>>>>> I have written the same code in WATIR as shown below >>>>>> >>>>>> >>>>>> @b.link(:text,'Recharge').click >>>>>> >>>>>> >>>>>> but it throws element not present error >>>>>> >>>>>> >>>>>> I checked out how this above code works, this above code forms this >>>>>> xpath at the end >>>>>> >>>>>> >>>>>> "//a[normalize-space()='Recharge']" >>>>>> >>>>>> >>>>>> So I suspected that this xpath might be the reason, So I have written >>>>>> the below selenium code using this xpath, As I expected the same error >>>>>> was >>>>>> >>>>>> thrown by selenium as well(element is not visible) >>>>>> >>>>>> >>>>>> @driver.find_element(:xpath,"//a[normalize-space()='Recharge']").click >>>>>> >>>>>> So what I think is, WATIR should refrain forming the xpath when b.link >>>>>> is called, they can directly convert this code to >>>>>> @driver.find_element(:link,'Recharge') but they >>>>>> >>>>>> can form the xpath when b.element(:text,'Recharge') is called >>>>>> >>>>>> >>>>>> any suggestion? >>>>>> >>>>>> >>>>>> -- >>>>>> -- >>>>>> Before posting, please read http://watir.com/support. In short: >>>>>> search before you ask, be nice. >>>>>> >>>>>> [email protected] >>>>>> http://groups.google.com/group/watir-general >>>>>> [email protected] >>>>>> >>>>>> --- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "Watir General" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to [email protected]. >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> >>>>> -- >> -- >> Before posting, please read http://watir.com/support. In short: search >> before you ask, be nice. >> >> [email protected] <javascript:> >> http://groups.google.com/group/watir-general >> [email protected] <javascript:> >> >> --- >> You received this message because you are subscribed to the Google Groups >> "Watir General" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > -- -- Before posting, please read http://watir.com/support. In short: search before you ask, be nice. [email protected] http://groups.google.com/group/watir-general [email protected] --- You received this message because you are subscribed to the Google Groups "Watir General" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
