2017-05-10 6 views
1

사용자가 동적 탭을 클릭 할 수 있는지 여부를 테스트하기 위해 파이썬 코드를 작성하고 있습니다.파이썬 셀렌을 사용하여 div 컨테이너 유체에 포함 된 링크를 클릭하는 방법

나는 탭의 속성을 검색하기 위해 find_elements_by_xpath()을 사용하고 있습니다. 이제 동적 인 탭 세트이므로 페이지 소스에서 볼 수 없습니다. 하지만 inspect 요소를 클릭 할 때 존재합니다.

나는 탭을 식별하기 위해이 같은 것을 사용하고 있습니다 :

elem = self.browser.find_elements_by_xpath("//a[contains(@role,'tab')]") 
for i in elem: 
    print(i.text) 

은 내가 get_attribute 기능을 시도하지만, 작동하지 않았다. 동적 탭 (페이지 소스에 나타나지 않음)을 클릭하기 위해 파이썬 셀렌을 사용할 수있는 방법이 있습니까?

답변

0

할 수 있습니다 wait some time 필요한 요소 DOM에 존재 클릭 할 때까지 :

from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait as wait 
from selenium.webdriver.support import expected_conditions as EC 

wait(self.browser, 10).until(EC.element_to_be_clickable((By.XPATH, '//a[contains(@role, "tab")]'))).click() 
+0

감사 앤더슨. 이것은 정말로 도움이됩니다. 단 한가지 - 여러 개의 탭이 있는데 첫 번째 탭만 선택할 수 있습니다. 여러 탭으로 확장 할 수있는 방법이 있습니까? 이 문서는 어떤 방법이 있다고 제안하지 않는다. elements_to_be_clickable 또는 이와 비슷한 것? –

+0

일반적으로 하나의 링크 만 클릭해야 할 수도 있습니다. 더 구체적인 'XPath'를 사용하여 필요한 링크와 일치 시키거나, 예를 들어 각 요소의 링크 텍스트를 가져 오려면 'EC.element_to_be_clickable'을 ' EC.presence_of_all_elements_located' – Andersson

관련 문제