Search code examples
javascriptrubyseleniumwatir

Clicking AJAX links? Watir


SOLVED:

I figured out my problem with this little piece of code:

b.link(id: 'm_wm_w5_m_lv_ctrl1_m_lnkWatch').fire_event :click

QUESTION:

I am having trouble clicking AJAX links with Watir.

Here is what I want to click.

https://i.sstatic.net/Du1js.png

This is what HTML looks like

<a id="m_wm_w5_m_lv_ctrl1_m_lnkWatch" href="javascript:__doPostBack('m_wm$w5$m_lv$ctrl1$m_lnkWatch','')" 
style="white-space:nowrap; font-size:11px;">New Listing (160)</a></td>

So, in Watir, I used the following to click to think

b.link(id: 'm_wm_w5_m_lv_ctrl1_m_lnkWatch').click

But when I do that, I get this CSS pop up:

https://i.sstatic.net/ApDFj.png

The HTML for close button on the pop up is:

<div id="NewsDetailDismissNew" class="btn mtx-btn-confirm enabled" title="Close">Close</div>

But when I use this in Watir

b.div(id: 'NewsDetailDismissNew').click

Nothing happens.

I did find some javascript that seems to correspond with the buttons

<!--<div class="container" >-->
    <script>
    var cvMarkAsRead=function(  ){ return "Mark as Read"; };
</script>
    <script>
    var cvClose=function(  ){ return "Close"; }; //This is closes the CSS pop up as far as I can tell
</script>
    <script>
    var cvOK=function(  ){ return "OK"; };
</script>
    <script>
    var cvDismiss=function(  ){ return "I've Read This"; };
</script>
    <script>
    var cvPreview=function(  ){ return "Print Preview"; };
</script>   

    <!-- End NewsDetail modal -->

My question to you guys is

  1. How can I click "New Listings" in Watir?

  2. How can I click the "Close" button on the pop up?

I see that the link has some javascript, but I am not familiar enough with Watir to use b.execute_script successfully. I read the documentation. I am not understanding it and the examples provided are not similar enough to my problem for me to learn by practicing or copying.

Thank you in advance.


Solution

  • The piece of code below solves my problem. It clinks on New Listing and successfully loads all the new listings as well as avoids triggering that erroneous CSS pop up.

    I think what this code does is activate the javascript by clicking the link.

    I successfully clicked this link

    <a id="m_wm_w5_m_lv_ctrl1_m_lnkWatch" href="javascript:__doPostBack('m_wm$w5$m_lv$ctrl1$m_lnkWatch','')" 
    style="white-space:nowrap; font-size:11px;">New Listing (160)</a>
    
    

    By using this code in Watir:

    b.link(id: 'm_wm_w5_m_lv_ctrl1_m_lnkWatch').fire_event :click