2017-05-01 2 views
0

셀릭이 더 이상 최신 버전의 Firefox와 호환되지 않기 때문에 geckodriver를 설치했습니다. 그래서 웹 사이트를 긁어 모으기위한 코드를 수정해야했습니다. 드롭 다운 목록에서 항목을 선택하는 데 문제가 있습니다. 아래 코드에서 모든 것은 "browser.select"까지 작동합니다. 오류가 발생합니다 : 'WebDriver'객체에 'select'속성이 없습니다. Spyder를 Mac에서 사용하고 있습니다.Geckodriver : 'WebDriver'객체에 'select'속성이 없습니다.

import time 
from selenium import webdriver 
from selenium.webdriver.common.desired_capabilities import  DesiredCapabilities 

firefox_capabilities = DesiredCapabilities.FIREFOX 
firefox_capabilities['marionette'] = True 
firefox_capabilities['binary'] = '/Applications/anaconda/lib/python3.6/site-packages/selenium/webdriver/firefox' 

browser = webdriver.Firefox(capabilities=firefox_capabilities) 

browser.get("https://sonuc.ysk.gov.tr/module/GirisEkrani.jsf") 

time.sleep(2) 
browser.find_element_by_id('closeMessageButton').click() 

     browser.find_element_by_id('j_id112:secimSorgulamaForm:j_id115:secimSecmeTa ble:0:secimId').click() 

browser.find_element_by_id ('j_id112 : secimSorgulamaForm : j_id142') 가

time.sleep(4) 
il_sayisi = len(browser.find_element_by_id("j_id48:j_id49:j_id108:cmbSecimCevresi").find_elements_by_tag_name('option'))-1 

for j in range(1,il_sayisi): 
    j = j +1 
    iller =  browser.find_element_by_id("j_id48:j_id49:j_id108:cmbSecimCevresi").find_elements_by_tag_name('option') 
    browser.select_dropdown('j_id48:j_id49:j_id108:cmbSecimCevresi',iller[j].value) 
time.sleep(2) 
ilce_sayisi =  len(browser.find_element_by_id("j_id48:j_id49:j_id120:cmbIlceSecimKurulu").find_elements_by_tag_name('option'))-1 
for i in range(0,ilce_sayisi): 
    i = i + 1 
    ilceler = browser.find_element_by_id("j_id48:j_id49:j_id120:cmbIlceSecimKurulu").find_elements_by_tag_name('option') 
    browser.select('j_id48:j_id49:j_id120:cmbIlceSecimKurulu',ilceler[i].value) 
    time.sleep(5) 
    browser.find_element_by_id('j_id48:j_id49:j_id192').click() 
    time.sleep(5) 
    browser.find_element_by_id("j_id48:tabloBilgileriPanel:j_id440").click() 
    time.sleep(5) 
    browser.find_element_by_id("j_id1114:j_id1115:j_id1121").click() 
    time.sleep(7) 

[EDIT 지방으로) (

루프하십시오. 코드의 마지막 부분은에 편집 된 다음 작품들] :

iller = browser.find_element_by_id("j_id48:j_id49:j_id108:cmbSecimCevresi") 
iller_options = iller.find_elements_by_tag_name('option') 
i_options = {option.text.strip(): option.get_attribute("value") 
     for option in iller_options if option.get_attribute("value").isdigit()} 

for k in sorted(list(i_options.keys()))[4:81]: 
# iller 
    iller = browser.find_element_by_id("j_id48:j_id49:j_id108:cmbSecimCevresi") 
    iller_options = iller.find_elements_by_tag_name('option') 
    i_options = {option.text.strip(): option.get_attribute("value") 
      for option in iller_options if option.get_attribute("value").isdigit()} 
    iller_select = Select(iller) 
    iller_select.select_by_value(i_options[k]) 

    time.sleep(5) 

+0

Plese 점유율 DOM XML을 도움이 있다면 알려주세요. – Shailendra

+0

선택 드롭 다운 내에서 옵션입니다. 선택 컨트롤로 옵션을 공유 할 수 있습니까? – Shailendra

+0

이들은 내부 HTML에서 목록의 처음 세 개체 (그것은 81 통과) \t- \t <옵션 값 = "1"> 아다 Seçiniz를 <= 옵션 값을 '1'= '선택'을 선택> \t \t bayrah

답변

0

from selenium import webdriver 
from selenium.webdriver.support.ui import Select 

selectEle = driver.find_element_by_id('<id_of_select_control_containg_these_option>') 

select = Select(selectEle) 

# select by visible text 
select.select_by_visible_text('ADANA') 

# select by value 
select.select_by_value('1') 

셀레늄 웹 다이버에서 select 메소드를 사용하려면 먼저 select 클래스의 객체를 만들어야합니다. 그런 다음 방법을 아래에 사용할 수 있습니다

select_by_index(index) 
select_by_value(value) 
select_by_visible_text(text) 

그것을 드롭 제어

+0

코드/루프에 통합하는 방법을 아직 알지 못했습니다. – bayrah

+0

모든 옵션은 유형 선택 요소 안에 있어야합니다. 해당 컨트롤의 xml을 입력하십시오. – Shailendra

+0

xml을 다음과 같이 공유하십시오. iller = browser.find_element_by_id ("j_id48 : j_id49 : j_id108 : cmbSecimCevresi") – Shailendra