Selenium CSS Locator, содержащий onclick в Firefox и IE - PullRequest
0 голосов
/ 19 января 2012

Я использую последнюю версию Selenium RC Python Client и Selenium RC Server.Я пытаюсь нажать кнопку на веб-странице со следующим HTML-тегом:

<input type="submit" id="b1" value="Button1 - Standard" onclick="javascript: alert('button1')">

Следующий код Python нажимает указанную выше кнопку с помощью CSS-локатора xxx 1st в Firefox, но не в IE.

В Firefox:

from selenium import selenium
s1 = selenium('myhost_ip_address', 4444, '*chrome', 'http://mypage_with_button.com')
print s1.is_element_present('css=input[value="Button1 - Standard"][type="submit"][id="b1"][onclick="javascript: alert(\'button1\')"]')
# Returns True

В IE8:

# NOTE: On IE, you might have to click on the notification 'To help protect your security... ActiveX controls that could....' and Allow Blocked Contents if needed
from selenium import selenium
s1 = selenium('myhost_ip_address', 4444, '*chrome', 'http://mypage_with_button.com')
print s1.is_element_present('css=input[value="Button1 - Standard"][type="submit"][id="b1"][onclick="javascript: alert(\'button1\')"]')
# Returns False

Я полностью осознаю, что у меня есть уникальный идентификатор для этого CSS, и мне не нужны такие атрибуты, какtype and onclick (мне просто любопытно, почему это происходит).

Подводя итог, этот пост, в частности, предназначен для локатора Selenium CSS с атрибутом onclick as, который работает в Firefox, но не в IE.Кто-нибудь знает, почему это так?

1 Ответ

0 голосов
/ 19 января 2012

У меня плохой опыт работы с локаторами в отношении атрибута onclick.Мой вывод заключается в том, что атрибут onclick преобразуется в объект функции JavaScript после рендеринга HTML-кода в браузере, поэтому сопоставление с помощью текстового шаблона завершается неудачно.Понятия не имею, почему это работает в FF, а в IE нет.Возможно, один браузер использует встроенную оценку селекторов CSS, а другой - внедренный движок Sizzle.

...