硒和捕获物

时间:2016-12-28 11:01:36

标签: selenium selenium-webdriver

使用firefox并在我的网络应用程序中标记一个链接我得到了其他的东西,这个代码我认为我可以用来捕获一个对象:

cb_or_somename_someothername cb_area_0219

此字符串在Firebug中是“classname”。 转到我输入的脚本:

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

但是脚本在执行时没有找到该元素。

Firebug面板中的其他onfo是:

class="cb_or_somename_someothername 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="#"


id="fwMainContentForm:j_idt156:2:selectRole"

我的脚本是否以错误的方式引用该元素?

1 个答案:

答案 0 :(得分:0)

您不能使用复合类名称搜索(带空格的名称)。请尝试使用CSS选择器进行搜索:

WebElement rolle = driver.findElement(By.cssSelector(".cb_or_somename_someothername.cb_area_0219"));

XPath

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

此外,您仍然可以使用以下两个类名之一进行搜索:

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

WebElement rolle = driver.findElement(By.className("cb_area_0219")); // Note that this class name could be generated dynamically, so each time it could has different decimal part

<强>更新

如果您获得Element is not clickable...异常,则在您尝试点击它时,您的元素似乎被其他元素覆盖。所以尽量等到这个&#34;覆盖&#34;不再可见:

new WebDriverWait(driver, 10).until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("//p[@class='environtment-banner']"));
WebElement rolle = driver.findElement(By.className("cb_area_0219")); 
rolle.click();