Селен и объект захвата

Используя firefox и отмечая ссылку в моем веб-приложении, я получаю среди прочего этот код, который я думаю, что могу использовать для захвата объекта:

cb_or_somename_someothername cb_area_0219

Эта строка является «classname» в Firebug.
Переход к скрипту, который я набираю:

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

Но скрипт не находит элемент при выполнении.

Другое onfo в панели Firebug:

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 ответ

  1. Нельзя использовать поиск по имени составного класса (имя с пробелами). Попробуйте вместо этого использовать поиск по 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...исключение, кажется, что ваш элемент покрыт другим элементом в момент, когда вы пытаетесь нажать на него. Так что постарайтесь дождаться, пока эта «крышка» больше не будет видна:

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