2017-05-01 12 views
0

セレンは最近のバージョンのFirefoxとの互換性がなくなったので、geckodriverをインストールしました。そのため、私はウェブサイトを削るために働いていたコードを修正しなければなりませんでした。ドロップダウンリストで項目を選択する際に問題が発生しています。以下のコードでは、すべて "browser.select"まで動作します。私はエラーが表示されます: 'WebDriver'オブジェクトに属性 'select'がありません。私はMacでSpyderを使用しています。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のリストの最初の3つのオブジェクトである(それは81を経由):\tから \t <オプション値= "1"> ADANA 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

関連する問題