2017-11-28 4 views
0

을 나는 파이썬 스크립트를 내 코드를 사용하여 브라우저를 열고 버튼을 클릭 해보십시오파이썬 : 요소를 찾을 수 없습니다 : 선택

from selenium import webdriver 
browser = webdriver.Chrome('/usr/local/bin/chromedriver') 
browser.get('xxx') 
browser.implicitly_wait(5) 

button = browser.find_element_by_css_selector('#softGateBox > div.button_softgate > a') 
button.click() 

웹 사이트가 열립니다. 5 초 동안 기다렸다가 오류가 표시됩니다.

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"#softGateBox > div.button_softgate > a"} 

무엇이 잘못 될 수 있습니까? 나는 크롬을 사용하여 버튼을 검사하고 마우스 오른쪽 버튼을 클릭하고 복사 선택기를 클릭합니다.

+1

더 쇼 실제 URL을 할 수 없도록 대신' "URL"'우리가이 페이지를 확인할 수 – furas

+0

어쩌면 짧은 선택'로 시작하는 당신이 페이지를로드 할 때마다 변경 # softGateBox'를 실행하고 프로그램에서 찾을 수 있는지 확인하십시오. – furas

+0

당신의 도움에 감사하지만, – DenCowboy

답변

1

  • <iframe> 외부 <iframe>에 요소가 너무 먼저 외부 찾아야 검색 할 수 있습니다 전에 그래서 당신은이 <iframe>switch_to_frame()을 찾을

    • 요소가 <iframe> 안에이 페이지에 몇 가지 문제가 있습니다 <iframe> 및 내부 검색을 시작하기 전에 switch_to_frame() 작은 모니터 구성 요소의
    • 이 보이지 않으므로 Selenium이 (를) 클릭 할 수 있습니다. 페이지를 요소로 스크롤 한 다음 클릭 할 수 있습니다.

    . BTW

    from selenium import webdriver 
    
    browser = webdriver.Chrome() #'/usr/local/bin/chromedriver') 
    
    browser.get('https://www.facebook.com/SparColruytGroup/app/300001396778554?app_data=DD722A43-C774-FC01-8823-8016BFF8F0D0') 
    browser.implicitly_wait(5) 
    
    iframe = browser.find_element_by_css_selector('#pagelet_app_runner iframe') 
    browser.switch_to_frame(iframe) 
    
    iframe = browser.find_element_by_css_selector('#qualifio_insert_place iframe') 
    browser.switch_to_frame(iframe) 
    
    button = browser.find_element_by_css_selector('#softGateBox > div.button_softgate > a') 
    browser.execute_script("arguments[0].scrollIntoView(true);", button) 
    
    button.click() 
    

    : 당신이 direclty selector('iframe')을 할 수

    페이지에 다른 <iframe>가있을 수 있습니다.

    내부 프레임은 id이 있지만 selector('iframe#some_uniqe_id')