【问题标题】:Selenium CSS Locator containing onclick on Firefox and IE在 Firefox 和 IE 上包含 onclick 的 Selenium CSS 定位器
【发布时间】:2012-01-19 16:33:45
【问题描述】:

我正在使用最新的 Selenium RC Python 客户端和 Selenium RC 服务器。我正在尝试单击具有以下 HTML 标记的网页上的按钮:

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

以下 Python 代码在 Firefox 上使用 CSS Locator xxx 1st 点击上述按钮,但在 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 的唯一 ID,我不需要像 type 和 onclick 这样的属性(我只是好奇为什么会这样)。

总而言之,这篇文章特别适用于具有 onclick 作为属性的 Selenium CSS 定位器,它适用于 Firefox,但不适用于 IE。有没有人知道为什么会这样??

【问题讨论】:

  • 您确定 Firefox 和 IE8 呈现相同的 html 吗?也许 IE8 正在做一些奇怪的事情并更改标记。如果您在两个浏览器中进行检查,您会看到相同的标记吗?
  • 实际上,对于 Firefox,我可以使用 firebug 清晰详细地看到 Source,但 IE 看​​不到。它不只是onclick,甚至onchange 和有时style 属性都不起作用...我确信某些属性不能在CSS 中使用,但可以被Xpath 使用!!

标签: python selenium internet-explorer-8 css-selectors


【解决方案1】:

我对定位器的 onclick 属性有不好的体验。我的结论是 onclick 属性在浏览器中呈现 HTML 后转换为 JavaScript 函数对象,因此通过文本模式匹配失败。不知道为什么它在 FF 中有效而在 IE 中无效。 也许一个浏览器使用 CSS 选择器的原生评估,而另一个浏览器使用注入的 Sizzle 引擎。

【讨论】:

  • 我同意。如果要匹配 onclick(或任何其他事件)属性的内容,则应匹配可能的最小子字符串。
  • 谢谢...仅供参考:如果您提供带有 onclick 的 xpath,它适用于 FF 和 IE。但是对于 CSS,它在 IE 上不起作用
猜你喜欢
  • 2017-06-18
  • 2015-02-04
  • 1970-01-01
  • 2012-05-18
  • 2015-08-20
  • 1970-01-01
  • 2014-02-28
  • 2014-04-03
  • 2017-03-22
相关资源
最近更新 更多