2016-12-23 11 views
0

セレンを使用してドロップダウンメニューから2番目の要素を選択しようとしていますが、スクリーンショットのように選択がほぼ完了したようですが、変更を確認するために管理します。私はclick()またはKeys.ENTERを使ってみましたが、何もしませんでした。ここセレンのドロップダウンメニューで選択した要素をクリック

はHTMLです:

<div class="mainSelectParent"> 
    <div class="styled-select" style=""> 
     <label></label> 
     <select id="mainselect" style="display: none;"> 
     <option value="agency">une agence</option> 
     <option value="atm">un distributeur automatique de billets</option> 
     <option value="atmCashDeposit">un automate de dépôt de billets</option> 
     </select><div class="ms-parent" style="width: 100%;"><button type="button" class="ms-choice"><span class=""> un distributeur automatique de billets</span><div class="open"></div></button><div class="ms-drop bottom" style="display: block;"><ul style="max-height: 250px;"><li class=""><label><input type="radio" name="selectItem" checked="checked" value="agency"> une agence</label></li><li class="selected"><label><input type="radio" name="selectItem" value="atm"> un distributeur automatique de billets</label></li><li><label><input type="radio" name="selectItem" value="atmCashDeposit"> un automate de dépôt de billets</label></li><li class="ms-no-results" style="display: none;">No matches found</li></ul></div></div> 
    </div> 
    </div> 

、ここでは私のコードです:

wait = WebDriverWait(driver, 15) 
wait.until(EC.visibility_of_element_located((By.CLASS_NAME, "mainSelectParent"))) 
element = driver.find_element_by_class_name('mainSelectParent') 
element.send_keys(Keys.DOWN) 
element.click() 

私には、セレクトとActionChainsしかし、誰より良い運を使用してみました。選択したクラスについて

from selenium.webdriver.support.ui import Select 

select = Select(driver.find_element_by_id('mainselect')) 

# select by visible text 
select.select_by_visible_text('un distributeur automatique de billets') 

# OR 

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

# OR 
# select by index 
select.select_by_index(1) 

もっとドロップダウン制約、で動作するように

+0

を(Python言語に応じJavascriptExecuter使用しないでください)あなたがクリックしようとしている 'HTML'サンプルの' class = 'mainSelectParent''を持つ要素 – Andersson

+0

mainSelectParentクラスを追加するためにhtmlを追加しました – user270911

答えて

0

style="display: none;"<select>タグの下の属性は、ドロップダウン値の選択に問題があります。

解決策:まず、属性値を変更する必要があります(makeが表示されている)ので、ドロップダウンを選択する必要があります。 Javaでは

- - あなたは道以下でそれを行うためにJavascriptExecutorを使用する必要が

JavascriptExecutor js = (JavascriptExecutor) driver; 
    js.executeScript("document.getElementById('mainselect').setAttribute('style', 'display:block')"); 

Pythonで動作する可能性のコードを以下の私は何を参照してください

 driver.execute_script("document.getElementById('mainselect').setAttribute('style', 'display:block')"); 

     select = Select(driver.find_element_by_id('mainselect')) 

     # select by visible text 
     select.select_by_visible_text('un distributeur automatique de billets') 

     # OR 

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

     # OR 
     # select by index 
     select.select_by_index(1) 
+0

私はループを追加し、今私はすべてのリンクを取得!歓声 – user270911

+0

よろしくお願いします。コーディングを楽しむ:) – NarendraR

0

使用Selectクラス、thisを参照してください。

+0

私はすでに試してみましたが、私は "Eleme ntは現在表示されていないため、対話できません "。それは私がselect = Select(ActionChains(driver.find_element_by_id( 'mainselect')))を追加したときに発生します。エラー 'ActionChains'オブジェクトには属性 'tag_name'がありません – user270911

関連する問題