Selenium с использованием Xpath в IE8 против Firefox3.6

Есть ли какая-либо очевидная причина, по которой Selenium находит и успешно выполняет следующую команду в браузере Firefox, но не в IE8 (через selenium RC)

selenium.click("//input[@type='Radio' 
                        and starts-with(@name, 'client-select') 
                        and @value='0']");

Я предполагаю, что это как-то связано с «рендерингом» IE (не уверен, что это правильный термин) xpath иначе, чем firefox. Так ли это? Чем они отличаются? Какие вы знаете статьи, которые помогут мне решить эту и подобные проблемы, связанные с двумя браузерами и xpath?

Большое спасибо.

ИЗМЕНИТЬ

Рассматриваемый элемент:

<input type="Radio" 
       value="1" 
       onfocus="" 
       onclick="return doRTgl(this);" 
       onblur="" 
       name="client-select_1580158">

Он вложен в некоторые довольно запутанные вложенные таблицы и добавляется динамически через Ajax.


person sMaN    schedule 20.01.2011    source источник
comment
Что ж, в вашем XPath у вас есть @value='0', но для ввода у вас есть value="1", поэтому этот путь не применяется к вводу. Другие потенциальные проблемы (я не знаю Selenium), когда вы используете XPath поверх HTML, связаны с именами элементов, именами и значениями атрибутов, попробуйте, работает ли использование @type='radio' лучше.   -  person Martin Honnen    schedule 20.01.2011
comment
Хороший пикап. Я просто привел плохой пример. Присутствуют радио с обоими ››@value=0 и ››@value=1. Извиняюсь. Попробую другой случай для типа.   -  person sMaN    schedule 21.01.2011
comment
Изменение @type='Radio' на @type='radio' помогло. Спасибо.   -  person sMaN    schedule 21.01.2011
comment
Как ни странно, xpath с @type='radio' не будет работать в FFox. Это должно быть @type='Radio'. Грррр. Мне придется реализовать два разных xpath в зависимости от среды тестирования, чтобы компенсировать неспособность двух конкурирующих браузеров договориться о таком простом вопросе использования заглавных букв в атрибутах элементов.   -  person sMaN    schedule 21.01.2011
comment
Вы можете использовать всю эту информацию, чтобы ответить на него самостоятельно.   -  person    schedule 22.01.2011


Ответы (1)


Мое решение состояло в том, чтобы удалить тип из локатора xpath

 selenium.click("//input[starts-with(@name, 'client-select') 
                    and @value='0']");

Что, к счастью, оставило мне достаточно информации, чтобы каждый раз находить уникальный элемент.

Что касается общего вопроса, xpath, который работает в Firefox, не обязательно будет работать в IE. Однако это был единственный случай, который я обнаружил во время рефакторинга моего кода. Для дальнейшего использования просто нужно протестировать каждую из них, найти различия и обойти их.

person sMaN    schedule 09.02.2011