2012-04-27 48 views
4

我有HTML的一部分,看起来类似:在Watir中,如何从文本的一部分获取全文?

<table><tbody><tr> 
<td><div> Text Goes Here </div></td> 
<td> ... rest of table 

有没有身份证,没有标题,没有任何一种可以轻松地识别包含文本的div描述。

当页面发生错误时,将错误插入到“文本转到此处”所在的位置(除非发生错误,否则文本不存在)。每个错误都包含单词“有效”。 例子:“该表格必须包含一个有效的名称”,“选择了无效的日期范围”或

我目前已经在寻找像这样的Watir代码:

if browser.frame(:index => 0).text.includes? "valid" 
    msg = # need to get full text of message 
    return msg 
else 
    return true 
end 

有没有什么办法让全文像这样的情况? 基本上:返回包含文本“有效”的元素的全文?

使用:2.0.4的Watir,webdriver的0.4.1

回答

1

试试这个

return browser.div(:text => /valid/).text 

return browser.table.div(:text => /valid/).text 

如果有效没有发现问题,应返回零。

+2

你必须小心这样做。文本定位器检查元素的文本,其中包括其子元素的文本。例如,如果表格周围有div标签,则第一个解决方案将为您提供表格中的所有文本,而不仅仅是表格中的特定div。 – 2012-04-27 20:43:10

+0

你是对的,先生。这就是HTML测试中的小片段的问题。用这么小的观点,人们不可能为大局提供安全的解决方案。 – 2012-04-27 20:48:20

2

鉴于你提供的结构,由于div经常被使用,我会倾向于使用正则表达式来查找表格单元格,正如Dave在他的答案中所示。除非你有很多嵌套表格,否则它更可能只返回你想要的文字。

此外,如果“有效”可能会出现在其他地方,那么你可能想提供文本稍大的样本,寻找

。浏览器(:cell => /valid/).text

相关问题