Selenium的GetAttribute方法的复杂性最近尝试使用seleniumRC的GetAttribute方法,但马上遇到了挑战。我正在尝试做一个非常简单的selenium.GetAttribute("//a/@href")但代码抛出SeleniumException并显示消息“错误:找不到元素属性://a/@href”。通过用selenium.GetText("//a[@href]")替换GetAttribute调用,我确认了一个元素必须存在,因为这个语句正确地返回了链接的文本。然后我尝试了:虽然手册明确指出相对xpath定位器不需要显式定位器类型(即“xpath=”前缀),但它对绝对xpath定位器保持沉默;从中我解释说前缀是必需的。但出于好奇,我回到我的相对表达式并添加了一个显式前缀-将selenium.GetAttribute("//a/@href")更改为selenium.GetAttribute("xpath=//a/@href")--这也有效!最后,我在SeleniumIDE中使用非常方便的“查找”按钮进行的??实验表明,它可以很好地处理元素,但无法处理属性。我可以理解突出显示属性没有意义,因为属性是不可见的页面元素,但为什么不突出显示包含该属性的元素,并使其具有不同的颜色呢?也许不是一项微不足道的任务……我的问题:我将上述实验的结果归结为这些问题;这就是我在这里发帖的全部目的!这些对我来说似乎都是错误,但如果您认为我使用不当或有解决方法,请告诉我:WhydoesGetAttributewithanXPathlocatortypeneedtobeexplicitwhileothermethods(suchasGetText)don't定位器类型?为什么DOM定位器会因“未找到”错误而失败?(该手册还明确指出DOM定位器不需要显式定位器类型前缀,但我仍然尝试在DOM测试中添加“dom=”作为前缀;它仍然失败。)为什么SeleniumIDE在尝试突出显示(查找)属性时不会更优雅地失败?使用相同的“xpath=//a/@href”定位器,按下查找按钮会产生这条丑陋的消息:“找不到[error]定位器:xpath=//a/@href,error=[Exception...”不转换JavaScript参数arg0[inIFlasher.scrollElementIntoView]"nsresult:"0x80570009(NS_ERROR_XPC_BAD_CONVERT_JS)"location:"JSframe::chrome://selenium-ide/content/selenium-runner.js::showElement::line386"数据:无]”您还需要输入以下内容:我在这里想要的每个测试模式是(A)GetText(locator-for-element-with-attribute)以确认元素的存在,然后(B)GetAttribute(定位器-)属性本身)。下表的6个slot中,我成功解决了3个,第4个好像是个bug。剩下的两个slot有解决办法吗?类型GetTextGetAttributeXPath//a[@href]xpath=//a/@hrefCSScss=a[href]??DOM??document.getElementsByTagName('A')[0].getAttribute('href'attribute)(详情:SeleniumRCversion1.0.3,Browser:Firefox3.6.13,myobjectcodeinC#)SeleniumRC的GetAttribute方法返回值元素属性定位器。这些定位器的一般形式是“[locator(id,xpath,css,etc)]@[attributename]”,例如“SaveButton@href”返回id为SaveButton的元素的href属性值。也可以使用Xpath定位器:“xpath=//a[contains(@id,'SaveButton')]@href”返回其id包含文本SaveButton的元素的href属性值。要回答你的问题,http://release.seleniumhq.org/selenium-remote-control/0.9.2/doc/java/com/thoughtworks/selenium/Selenium.html#getAttribute%28java.lang.String%29getAttributejava.lang.StringgetAttribute(java.lang.StringattributeLocator)获取元素属性的值。参数:attributeLocator-一个元素定位器,后跟一个@符号,然后是属性的名称,例如“foo@bar”返回:指定属性的值,所以你应该说selenium.GetAttribute("locator@href")定位器是编号或名称。如果您的元素没有ID或名称,您应该使用xpath、selenium.GetAttribute("xpath=/html/body/a/@href")就像您已经成功尝试过一样。以上就是C#学习教程:Selenium的GetAttribute方法的复杂化的全部内容。侵权请点击右侧联系管理员删除。如需转载请注明出处:
