user1047912
user1047912

Reputation:

Click on element which is dynamically generated using watir-webdriver

I have the following HTML code :

<table class="report" width="100%">
<thead>
</thead>
<tbody>
<tr class="alt">
<td>
<a onclick="window.open(this.href);return false;" href="/search/searches/1563/reports/946">56175-746-45619568-noor.fli.zip</a>
</td>
<td class="_"> Report </td>
<td class="_"> 09 Apr 2012</td>
<td class="_"> Noor</td>
<td class="_"> 2.8 MB</td>
<td class="_">Ready</td>
</tr>

I want to click on href="/search/searches/1563/reports/946">56175-746-45619568-noor.fli.zip but I do not want to use XPATH. I tried a lot of things but failed, is there a way to click on this href without using XPATH. Thanks a lot.

Upvotes: 1

Views: 1622

Answers (2)

Chuck van der Linden
Chuck van der Linden

Reputation: 6660

Is it the only link in that table? or always the first link in that table?

browser.table(:class => 'report').a.click

If there are multiple tables, then you have to figure out how to find the one you want. perhaps by the text inside the table. If in your example the text Noor is unique to that table, then you could try something like this

browser.table(:class => 'report', :text => /Noor/).a.click

or if you know the structure above will persist where the link and the info about the report are on a single table row)

browser.row(:text => /Noor/).a.click

You'd have to try to decide which is going to be the most robust or least brittle

Upvotes: 1

Dave McNulla
Dave McNulla

Reputation: 2016

You can use the href

br.link(:href => '/search/searches/1563/reports/946').click

or the text

br.link(:text => '56175-746-45619568-noor.fli.zip').click

or you can use variations with regex matches

br.link(:href => /reports/).click

or

br.link(:text => /noor.fli.zip/).click

Upvotes: 1

Related Questions