使用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"
我的脚本是否以错误的方式引用该元素?
答案 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();