2016-06-15 8 views
0

ListBox (kein Tropfen downlist) wie folgt:Python Selen wählen nur ein Element in einer Listbox

<select name="lstym" onChange="SubmitForm(this.form,'ym')" multiple size="5"> 
    <option value="All" selected>All</option> 
    <option value="201601">201601</option> 
    <option value="201602">201602</option> 
    <option value="201603">201603</option> 
    <option value="201604">201604</option> 
    <option value="201605">201605</option> 
</select> 

Scrapy Code:

select = Select(driver.find_element_by_name('lstym')) 
for option in select.options: 
    #select.deselect_all() 
    #select.deselect_by_index(0) 
    option.click() 

Der erste Punkt defaultly auch immer ausgewählt wird. Möchte aber nur einmal einen Gegenstand auswählen. und select.deselect_by_index(0) funktionieren nicht.

Solution (nicht gut) Ich fand:

browser.find_element_by_xpath('//select[@name="lstym"]').click() 
    browser.find_element_by_xpath('//option[@value="201601"]').click() 

Mindestens der Standard ausgewähltes Element All entfernt wurde. Aber der dritte Punkt ist immer ausgewählt. Das ist in Ordnung für mich.

+0

Tritt dieses Verhalten auch auf, wenn Sie manuell auswählen? –

+0

Nein. Es ist in scrapy-Code wie das. Kein Problem, wenn Sie manuell auswählen. – Claiel

+0

Also nur um zu überprüfen, wenn Sie andere Optionen wählen, bleibt ALLE ausgewählt? –

Antwort

0

Wenn Sie ein Element in einer Listbox auswählen, werden standardmäßig die anderen Elemente abgewählt. Sie sollten also in der Lage sein, einfach auf das gewünschte Element zu klicken, und alle anderen Optionen werden deaktiviert.

+0

Sollte so sein. Aber Selen scheint nicht so zu funktionieren. – Claiel

Verwandte Themen