У меня есть файл, который имеет форму следующего 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. В зависимости от темы я хочу щелкнуть ссылку ID Test1. Может ли кто-нибудь помочь, пожалуйста, как это сделать?

Вот что я попробовал:

    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
-1
userash 24 Апр 2017 в 22:06

2 ответа

Лучший ответ

Вы можете выполнять итерации по строкам таблицы, и элементом итерированной строки будет ячейка таблицы. Затем вы можете просмотреть текст этой ячейки. Если значение 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

Это все еще неуклюжий и хрупкий, так что может быть лучше нацелить ячейки на основе их атрибутов класса.

Также - в вашем примере с watir - похоже, что вы пытаетесь найти ячейки таблицы на основе атрибута класса родительской строки (т.е. browser.tds(:class, 'list_row') вместо browser.tds(:class, 'list_row').

0
orde 25 Апр 2017 в 06:30

Учитывая, что 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
0
Justin Ko 25 Апр 2017 в 13:09