2013-07-03 19 views
7

Mam aplikację internetową, którą automatyzuję za pomocą WebDriver i Python.W jaki sposób klikasz element ukryty za pomocą Selenium WebDriver?

Problem polega na tym, że istnieje menu podobne do tego: enter image description here Jeśli kliknę przycisk ręcznie na przycisku strzałki rozwinie się ono do innego podmenu, skąd muszę wybrać konkretne pole.

Mogę znaleźć to trzecie menu, ale gdy kliknę na nim używając element.click() zamiast rozwinąć menu i pokazując mi jego pozycje w podmenu, pokazuje on skonsolidowane treści wszystkich podmenu.

(Ręczne rozwinięcie do podmenu uzyskuje się przez kliknięcie małych ikonek ze strzałkami przed nazwami grup) Tak więc, w jaki sposób mogę klikać ikony strzałek, aby rozwinąć jedno z menu grupy w podmenu.

To jest HTML odpowiadające menu trzeciej grupy, jeśli pomaga.

<div id="node_3_item" class="treeLabelSelected" style="padding-left: 0px; background-position: 0px -24px;"> 
<span style="background-position: 0px -24px;">XXX Groups</span> 
</div> 
<div style="display: none;"></div> 
</div> 

display: none linia jest faktycznie ukrywa podmenu (o ile mogę zrozumieć)

Wszelkie sugestie, w jaki sposób obsługiwać będzie mile widziane. Dzięki

Uwaga: Mam już kilka pytań na temat SO związanych z interakcją z ukrytymi elementami internetowymi, ale różnią się one od mojej sytuacji.

Odpowiedz

4

Grab element chcesz kliknij:

# Or using xparth or something 
element = driver.find_element_by_css_selector(css_selector) 

Kliknij go przy użyciu javascript:

driver.execute_script("$(arguments[0]).click();", element) 

UWAGA: Używam jQuery inaczej zaznaczyć, że rodzimy się z javascript

+0

Musiałem użyć driver.execute_script ("arguments [0] .click();", element) – Seth

4

Możesz użyć JavaScriptExecutor

Na przykład. - document.getElementsByClassName('post-tag')[0].click();

Issue że JS poprzez JavaScriptExecutor

(JavascriptExecutor(webdriver)).executeScript("document.getElementsByClassName('post-tag')[0].click();"); 
+1

Czy mógłbyś trochę rozwinąć? – abhi

+0

Ja również nie rozumiem. Czy możemy zobaczyć przykładowy tekst z prawdziwego świata? Robię 'ptor.driver.executeScript (" document.getElementsByClassName ('logout') [0] .click(); ");' i wywołuje 'UnknownError: {" errorMessage ":" 'undefined "nie jest function (ocena 'document.getElementsByClassName (' logout ') [0] .click()') "' – BradGreens

0

Jeśli aplikacja korzysta jQuery można go używać do określenia elementu docelowego, który będzie uprościć pracę. Na przykład.

$('.targetClass')