Watir-webdriver: Firefox не нажимает правильную ссылку, но IE и Chrome работают нормально - PullRequest
2 голосов
/ 30 июня 2011

Вопрос справки

Привет, я новичок в Ruby и watir-webdriver, я искал все и не могу найти ответ на этот вопрос.

У меня есть ссылка, которая находится внутри таблицы, эта таблица имеет заголовок в верхней части таблицы, который сортирует таблицу по номеру при нажатии. В Chrome и Ie ссылка щелкается нормально и продолжается, но в Firefox она щелкает заголовок и реорганизует таблицу, но не ссылку, и сообщение об ошибке не выдается.

Я пробовал xpath, regexp, ссылки на таблицы,: href,: text, (нет полей id или name) и с помощью метода .flash, который я видел, он смотрит на правильную ссылку, но все же нажимает на верхнюю часть таблицы.

Вот HTML

<thead>
    <tr>
        <th id="0" class="canclick" width="14%" align="left" datatype="string">
            Contract #
            <span id="sortIndicatorBlank">&nbsp;&nbsp;&nbsp;&nbsp;</span>
        </th>
    </tr>
</thead>
<tbody>
    <tr class="backD">
        <td width="10%" valign="top" align="left">
             <a href="/policy/clientAccountSummary.action?forwarder=ClientList&basho.menuNodeId=12801&basho.taskPanelNodeId=1261&number=015633828"> 015633828 </a>
        </td>

Вот код, который я использую, который нажимает правильную ссылку в Chrome и Ie, но не в Firefox

link = "015633828"

exp1 = Regexp.new link

@browser.link(:href, exp1).click

Еще раз уточню: используя метод .flash, он находит правильную ссылку (мигает ссылка, которую я хочу щелкнуть внутри таблицы), но при фактической операции .click он щелкает часть заголовка "Contract #", а не ссылку. ,

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

Если вам нужна дополнительная информация, чтобы уточнить, дайте мне знать. Спасибо!

Ответы [ 3 ]

3 голосов
/ 08 июля 2011

Я не уверен, почему это происходит, но в качестве потенциального обходного пути, возможно, вы могли бы попробовать что-то вроде следующих строк, чтобы извлечь значение href из ссылки, а затем сделать так, чтобы браузер перешел к нему напрямую?

@browser.goto(@browser.link(:text, ' 015633828 ').href)

(вам может понадобиться добавить базовый URL для сайта в href, чтобы это работало, но вы поняли идею)

1 голос
/ 07 июля 2011

или, возможно, попробуйте с xpath:

@browser.link (: XPath, "// а [@text = ' someUser # ']") нажмите

.
0 голосов
/ 07 июля 2011

Что ж, если вы хотите убедиться, что нажата ссылка внутри тега td, а не ссылка внутри тега th, попробуйте следующее:

browser.td.link(:href => /someUser#/).click

Хорошо, что выпредоставили как HTML, так и код Watir, но в будущем постарайтесь предоставить реальный HTML (или настолько реальный, насколько это возможно).someUser# действительно смутил меня, я даже не уверен, что понял проблему.

Если предложенное мной решение не работает, отредактируйте вопрос, чтобы он содержал настоящий HTML.

...