This html doesn't have any links with text equal to "Recharge"
On Monday, March 27, 2017 at 11:13:03 PM UTC-5, Raja gopalan wrote: > > 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]> >> 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] >>> 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] 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.
