访问selenium中的元素

时间:2017-01-02 13:48:02

标签: selenium xpath selenium-webdriver css-selectors

在Firebug中,我有一个链接内容:

<a id="fwMainContentForm:j_idt156:2:selectRole" class="cb_or_somename cb_area_0219" onclick="jsf.util.chain(this,event,'$(this).attr(\'disabled\', \'disabled\');return true;','mojarra.jsfcljs(document.getElementById(\'fwMainContentForm\'),{\'fwMainContentForm:j_idt156:2:selectRole\':\'fwMainContentForm:j_idt156:2:selectRole\'},\'\')');return false" href="#">Somename</a>

如何使用“classname”访问链接(点击它)?

我尝试了以下内容:

   WebElement rolle = driver.findElement(By.className("cb_or_somename cb_area_0219"));

但我收到错误:

  

线程“main”中的异常
  org.openqa.selenium.InvalidSelectorException:给定的选择器cb_or_somename cb_area_0219无效或不会产生WebElement。
  发生以下错误:   InvalidSelectorError:不允许使用复合类名

2 个答案:

答案 0 :(得分:0)

cb_or_somename cb_area_0219实际上是两个类。 By.className可以收到其中一个

WebElement rolle = driver.findElement(By.className("cb_or_somename"));
// or
WebElement rolle = driver.findElement(By.className("cb_area_0219"));

如果要使用cssSelector

找到包含这两者的元素
WebElement rolle = driver.findElement(By.cssSelector(".cb_or_somename.cb_area_0219"));

答案 1 :(得分:0)

要使用这两个类查找元素,可以使用xpath而不是className。

 WebElement rolle = driver.findElement(By.xpath("//*[contains(@class,'cb_or_somename cb_area_0219')]"));