Не удается найти текстовое поле с динамическим идентификатором - PullRequest
1 голос
/ 30 марта 2012
<div id="temp_1333021214801"> 
    <input type="text"/> 
</div>

$browser.text_field(:xpath,".//*[@id='temp_1333018770709']/input").set("apple")

Я получаю сообщение об ошибке "невозможно найти элемент", поскольку идентификатор изменяется динамически.

Пожалуйста, помогите мне установить текст в текстовом поле.

Ответы [ 2 ]

0 голосов
/ 19 августа 2013

Кажется, что ваш динамический идентификатор - это temp_, так что это должно быть сделано с учетом приведенной выше информации:

browser.div(:id, /temp_\d+/).text_field.set 'something'

Проблемы с моим решением в том, что он предполагает, что id всегда будет temp_ regex, совпадающим с любым числом, установленным последовательно, что, по-видимому, имеет место в вашем примере выше. Также предполагается, что в DOM этой страницы нет другой комбинации div (: id, / temp_ \ d + /), скорее всего, это не должно быть проблемой.

0 голосов
/ 30 марта 2012

Если у вас есть динамические идентификаторы, я могу предложить следующее:

  1. Код для подсчета объектов. Например

    $browser.text_field(:index => 2)

    дает третье поле text_ на странице.

  2. Код того, что находится вокруг того, что вы пытаетесь найти.

    $browser.div(:name => 'mydiv').text_field(:index=>2)

    дает третье текстовое поле в div, называемое mydiv.

ОДНАКО

Если ваш интерфейс менее тестируемый таким образом, я настоятельно рекомендую вам в первую очередь задуматься о своей приверженности автоматическому тестированию. Любые незначительные изменения в программном обеспечении приведут вас к работе до 21:00, когда вы обновляете все свои скрипты, раскачиваясь и раскачиваясь, поэтому, если обслуживание кода не является вашим хобби в выходные дни, подумайте о полуавтоматическом или исследовательском тестировании или ручных скриптах. Поговорите с разработчиками (кем бы это ни было. Это может быть вы!) Или руководителями высшего звена (если это не вы тоже), чтобы узнать, можно ли сделать его более тестируемым. Также не используйте xpaths, если вы не испытываете в этом какое-то девиантное удовольствие.

Надеюсь, это было полезно, я ничего не могу сделать без исходного HTML.

...