我有一个文件,其中包含以下HTML代码:
<label for="subject">Subject</label>* : <input name="subject" id="subject" type="text">
<br>
<label for="message">Message</label>* : <textarea type="text" name="message" id="message"></textarea>
<br>
<input name="name" id="name" value="" type="hidden">
<input value="Submit Ticket" onclick="submitTicket()" type="button">
提交表单后,相应的故障单将位于包含以下HTML代码的表中:
<table class="list" width="100%">
<tbody><tr class="messagelist">
<th>#</th>
<th>ID</th>
<th>Name</a></th>
<th>Subject</a></th>
<th>Owner</a></th>
<th>Priority</a></th>
</tr>
<tr class="list_row">
<td>1.</td>
<td><a href="index.html?ID=14" class="trackingcode">14</a></td>
<td class="name">X</td>
<td class="subject">Test1</td>
<td class="owner">AB</td>
<td class="priority">High</td>
</tr>
<tr class="list_row">
<td>2.</td>
<td><a href="index.html?ID=22" class="trackingcode">22</a></td>
<td class="name">Y</td>
<td class="subject">Test2</td>
<td class="owner">CD</td>
<td class="priority">Low</td>
</tr>
<tr class="list_row">
<td>3.</td>
<td><a href="index.html?ID=31" class="trackingcode">31</a></td>
<td class="name">Z</td>
<td class="subject">Test3</td>
<td class="owner">EF</td>
<td class="priority">Medium</td>
</tr>
<tr class="list_row">
<td>4.</td>
<td><a href="index.html?ID=42" class="trackingcode">42</a></td>
<td class="name">A</td>
<td class="subject">Test4</td>
<td class="owner">GH</td>
<td class="priority">High</td>
</tr>
<tr class="list_row">
<td>5.</td>
<td><a href="index.html?ID=34" class="trackingcode">34</a></td>
<td class="name">B</td>
<td class="subject">Test5</td>
<td class="owner">IJ</td>
<td class="priority">Low</td>
</tr>
<tr class="list_row">
<td>6.</td>
<td><a href="index.html?ID=43" class="trackingcode">43</a></td>
<td class="name">C</td>
<td class="subject">Test6</td>
<td class="owner">KL</td>
<td class="priority">Medium</td>
</tr>
</tbody></table>
我正在为上面的表格和票证写一个RUBY代码。我想验证有关主题Test1
的已提交表单和票证。根据主题,我想点击Test1
的ID链接。
有人可以帮忙怎么做?
以下是我的尝试:
require 'watir'
browser.tds(:class, 'list_row').each do |tds_row|
if tds_row.text =~ /Test1/
tds_row.a(:href, 'index.html').click
end
end
答案 0 :(得分:0)
您可以迭代表行,迭代行的元素将是表格单元格。然后,您可以检查该单元格的文本。如果第4个单元格的值是您要查找的值(即“Test1”),则单击第二个单元格中的链接,然后退出迭代。这是一个人为的例子:
require 'watir'
b = Watir::Browser.new :chrome
b.goto("http://some_url")
b.button(:value => "Submit Ticket").click
b.trs.each do |tr|
if tr[3].text == "Test1"
tr[1].a.click
break
end
end
b.close
它仍然笨重而脆弱,因此根据类属性定位细胞可能更好。
另外 - 在你的例子中 - 看起来你正试图根据父行的类属性(即browser.tds(:class, 'list_row')
而不是browser.tds(:class, 'list_row')
来定位表格单元格。
答案 1 :(得分:0)
鉴于HTML已经很好地标记,迭代遍历行比它必须更复杂。找到特定的主题单元格然后导航到其父行会更容易。
# Find the cell with the specific subject text
subject = browser.td(class: 'subject', text: 'Test1')
# Get the row
row = subject.parent
# Click the tracking code link
row.link(class: 'trackingcode').click