单击基于div中某些文本的按钮

时间:2015-08-18 00:24:01

标签: java selenium

如何根据文字点击按钮"查看更多"或"注册"

 <div data-reactid=".0.0.$LandingPage.0.1.0.0.1.0.3">
 <button class="arda-button btn -primary" data-reactid=".0.0.$LandingPage.0.1.0.0.1.0.3.$main-menu-see-more">See More</button>
  <button class="arda-button btn -primary" data-reactid=".0.0.$LandingPage.0.1.0.0.1.0.3.$main-menu-sign-up">Sign Up</button>
</div>
</div>

或者基于上面的html,你能看到识别和点击两个按钮的独特方式吗?

由于

3 个答案:

答案 0 :(得分:4)

识别使用包含text()作为&#39;查看更多&#39;并且&#39;注册&#39;,应该工作。

By.xpath(&#34; //按钮[包含(text(),&#39;查看更多&#39;)]&#34;) By.xpath(&#34; //按钮[包含(text(),&#39;注册&#39;)]&#34;)

答案 1 :(得分:1)

您可以使用XPATH(考虑Xpath并不大且丑陋)每个按钮将分开。

如果XPATH是丑陋的并且长时间使用正则表达式,其中数据重新包含&#34;主菜单 - 看到更多&#34; for&#34;查看更多&#34;按钮。并且数据重新发送包含注册按钮的主菜单注册

"//*[contains(@data-reactid,'main-menu-see-more')]"

 " //*[contains(@data-reactid,'main-menu-sign-up')]"

如何链接文字&#34;查看更多&#34;和#34;注册&#34;。

请分享您的反馈,而不是......

答案 2 :(得分:0)

除非绝对必要,否则我会像瘟疫一样避免使用XPath,因为它比其他方法复杂,速度慢,而且更容易破坏(一般情况下)。我会用CSS Selector做到这一点。

data-reactid对于每个元素都是唯一的,因此我会使用它们来查找所需的元素而不是文本。

driver.findElement(By.cssSelector("button[data-reactid='.0.0.$LandingPage.0.1.0.0.1.0.3.$main-menu-see-more']")).click();

此代码会找到具有指定button的{​​{1}}并点击它。

CSS选择器非常强大,它可以让你避免使用XPath ...这是一件好事。 :)

CSS Selector reference