Apparently you included the link in an earlier post that I missed. It does 
look like Watir is grabbing a different, hidden element. I'll try to take a 
longer look at it tonight.

Titus

On Tuesday, March 28, 2017 at 11:24:16 AM UTC-5, Raja gopalan wrote:
>
> hi, sorry, that was not done properly, here is the html file
>
> <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>
> <li class="link-active">
> <a module-id="common" data-i18n="recharge" href="javascript:void(0);">
> Recharge</a>
> <!-- ==== Label 3 Menu || Sub Menu for Recharge ==== -->
> <ul>
> </li>
> <li>
> </ul>
> </div>
> </article>
> </section>
> <!-- mega-menu-pay-recharge End-->
> <!-- mega-menu-get-->
>
> On Monday, March 27, 2017 at 9:32:57 PM UTC-7, Titus Fortner wrote:
>>
>> 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.

Reply via email to