2016-11-14 2 views
1

특정 웹 페이지에서 양식을 채우려고합니다. 나는 대부분 페이지로 성공을 거두고 있지만 어떤 것은 저에게 문제를 일으키고 있습니다.Selenium, 팝업 양식 (Python)

일부 페이지는 페이지 자체에 양식이 처음에는 표시되지 않는 대신 페이지를 열어야하는 버튼을 클릭해야합니다 (JavaScript로 보이는 것) 페이지가 채워져 있어야합니다. .

나는 새로운 팝업 창에서 생성되고 경고 창에서 생성되는 양식을 채우는 방법을 다루는 예제를 살펴 보았습니다. 그러나 나는이 특별한 경우를 해결할 수있는 예제를 찾을 수없는 것 같습니다.

이것은 내가 지금까지 가지고있는 코드입니다.

 driver = webdriver.Chrome() 
    driver.implicitly_wait(10) 

    mouse = webdriver.ActionChains(driver)  
    driver.get(url) 

    driver.maximize_window() 

    value = 'fill form' 
    span_xpath = '//span[contains(text(), "' + value + '")]' 
    span_element = driver.find_element_by_xpath(span_xpath) 
    mouse.move_to_element(span_element).click().perform() 
    time.sleep(5) 

여기까지 모든 것이 작동하며 채우기 양식 버튼이 클릭되어 브라우저 페이지에서 양식을 엽니 다.

그러나 다음 실행할 때 오류가 항상 발생하지 않는다 "이러한 요소 : 요소를 찾을 수 없습니다"나는 등등, 이름, ID, XPath에 의해 요소를 찾기 위해 노력했다

 n =driver.find_element_by_id('name') 
    n.send_keys('john smith') 

하지만를 무엇을 시도하든 양식 요소를 찾을 수 없습니다.

이 문제에 대한 도움을 크게 주시면 감사하겠습니다.

+0

pop 요소가 프레임/iframe 안에 있지 않은지 확인하십시오. –

+0

@SaurabhGaur, 예, iframe에 있습니다. iframe 내 iframe. src = driver.find_element_by_id ("iframe_id"). get_attribute ("src")를 사용하여 첫 번째 iframe의 src에 액세스 할 수 있습니다. 하지만 두 번째 iframe withiin 그 iframe이 없어 그래서 그 src를 얻는 방법을 모르겠다 –

+0

자식 iframe –

답변

0

driver.switch_to_frame(0) (parent iFrame) 다음 driver.switch_to_frame(1) (chiled iFrame) 다음 find the element 스위치를 사용하여 제 1 스위치.

참고 : 대신 index를 사용하면 다른 웹 요소와 같은 ID, 이름, XPath는 등을 사용하여 프레임을 식별하고 인수로 switch_to_frame하는 그 요소를 전달할 수 있습니다. 이것은 더 일관성을 제공합니다.