Mic*_*ens 5 c# xpath dom css-selectors selenium-rc
我最近尝试使用selenium RC的GetAttribute方法,但立即遇到了挑战.我试图执行一个非常简单selenium.GetAttribute("//a/@href")但代码抛出一个SeleniumException,消息"错误:无法找到元素属性:// a/@ href".通过替换selenium.GetText("//a[@href]")代替的的getAttribute电话,我确认了一个元素肯定存在,因为这种说法正确的返回链接的文本.
然后我尝试了:
selenium.GetAttribute("document.getElementsByTagName('a')[0].getAttribute('href')")- 同样的问题; 稍有不同的错误消息(并且错误消息缺少最后的括号): "错误:元素document.getElementsByTagName('a')[0] .getAttribute('找不到'href'.请注意,这个确切的表达式在Firebug中正常工作安慰.selenium.GetText("xpath=/html/body/a[@href]")用来确认存在然后selenium.GetAttribute("xpath=/html/body/a/@href")获取属性 - 它工作了!虽然手册明确指出相对 xpath定位器不需要显式定位器类型(即"xpath ="前缀),但它对绝对 xpath定位器保持沉默; 我从中解释说前缀是必需的.但出于好奇,我回到了我的相对表达并添加了显式前缀 - 更改selenium.GetAttribute("//a/@href")为selenium.GetAttribute("xpath=//a/@href")- 这也有效!
最后,我在Selenium IDE中使用非常方便的" 查找"按钮进行的实验表明,它可以很好地处理元素,但是会失败并带有属性.我可以理解,突出属性没有意义,因为属性不是可见的页面元素,但为什么不突出显示包含属性的元素,并使其以不同的颜色?也许不是一项微不足道的任务......
我将上述实验的结果归结为这些问题; 这是我在这里发布的全部目的!这些似乎对我来说都是一个错误,但如果您认为我的使用不正确或有解决方法,请告诉我:
"xpath=//a/@href"定位器,按下查找按钮会产生这个丑陋的消息:"找不到[错误]定位器:xpath = // a/@ href,error = [Exception ..."无法转换JavaScript参数arg 0 [inIFlasher.scrollElementIntoView ]"nsresult:"0x80570009(NS_ERROR_XPC_BAD_CONVERT_JS)"location:"JS frame :: chrome://selenium-ide/content/selenium-runner.js :: showElement :: line 386"data:no]"您还需要输入以下内容:此处我想要的每个测试模式是(A)GetText(locator-for-element-with-attribute)确认元素的存在然后(B)GetAttribute(locator-for-)属性 - 本身).在下表中的6个插槽中,我成功地解决了其中3个插槽,并且第4个似乎是一个错误.剩下的两个插槽有解决方案吗?
Type GetText GetAttribute
XPath //a[@href] xpath=//a/@href
CSS css=a[href] ??
DOM ?? document.getElementsByTagName('a')[0].getAttribute('href')
(详细信息:Selenium RC版本1.0.3,浏览器:Firefox 3.6.13,我在C#中的目标代码)
Selenium RC 的GetAttribute方法返回元素\属性定位器的值。这些定位器的一般形式是
"[locator (id, xpath, css, etc)]@[attribute name]"
Run Code Online (Sandbox Code Playgroud)
例如
"SaveButton@href"
Run Code Online (Sandbox Code Playgroud)
href返回具有 id 的元素的属性值SaveButton。还可以使用 Xpath 定位器:
"xpath=//a[contains(@id, 'SaveButton')]@href"
Run Code Online (Sandbox Code Playgroud)
href返回id 包含 text 的元素的属性值SaveButton。
为了回答您的问题,
1:我真的不知道,这是Selenium设计者的问题。
2:Selenium 命令执行几个不同的“上下文”。在某些命令中,document指的是被测试的网页,在其他命令中,document指的是包含 Selenium 框架的页面(我相信是 testRunner.html)。
3:错误消息表明找不到您请求的元素。如果确实存在错误,那么之后的信息可能对 Selenium 团队有用,但不会真正影响您。信息越多越好,对吗?
| 归档时间: |
|
| 查看次数: |
9620 次 |
| 最近记录: |