2017-04-13 142 views
0

我想在这里找到test1,但是我不能。有人能告诉我我做错了什么吗?在Webdriver中查找元素

<button class="btn toggle-tab active" data-filter="test1">test1</button> 
<button class="btn toggle-tab" data-filter="test2">test2</button> 
<button class="btn toggle-tab" data-filter="test3">test3</button> 
<button class="btn toggle-tab" data-filter="test4">test4</button 

我曾尝试为 -

.//*[text()='test1'] 

.//title[text()='test1'] 

.//data-filter[text()="test1"] 
+0

是另一个框架内的按钮? –

+0

当你说它没有找到,是否有异常消息?您应该花一些时间阅读XPath并了解它们是如何形成的。您错误地使用了它们,但这里超出了评论的范围来解释所有内容。 – JeffC

+0

是的,该按钮位于iframe中。我如何导航到正确的节点? – arm

回答

1
"//button[contains(.,'test1')]" 

还有其他的方法,但我更喜欢含有超过等号(=)和包含,我喜欢 “”在“文本()”

你有效搜索的第一个标记“按钮”,其中包含文本“测试1”

这个问题更XPath的关系,所以你可能要包括的XPath标签在您未来的帖子中提到他们。

+0

“//button[contains(.,'test1')]”不起作用:( – arm

+0

请向我显示您的代码,至少请执行检索的行。 –

0

XPath查找linktext的是 - // htmltag [文本()= 'linktext的']

在这里,你的情况下,XPath的将是 - //按钮[文本()= 'test1']

0

而不是使用XPath定位元素,请尝试使用CSS选择器。 test1的CSS选择器将为按钮[class $ ='active']。 在查找元素时使用id,CSS选择器或类名总是比较好,在最坏的情况下通常首选元素,幸运的是,我遇到过几种情况。