Muszę wybrać element z menu rozwijanego .
Na przykład:
<select id="fruits01" class="select" name="fruits">
<option value="0">Choose your fruits:</option>
<option value="1">Banana</option>
<option value="2">Mango</option>
</select>
1) Najpierw muszę go kliknąć. Robię to:
inputElementFruits = driver.find_element_by_xpath("//select[id='fruits']").click()
2) Następnie muszę wybrać, powiedzmy, dobry element Mango
.
Próbowałem to zrobić, inputElementFruits.send_keys(...)
ale nie udało się.
python
selenium
selenium-webdriver
web-scraping
webdriver
Adam Bovien
źródło
źródło
Select
klasy znacznie ułatwia rozwiązanie problemu, zobacz odpowiedź, którą opublikowałem.find_by_id
? Jak więc podać wartość? Ponadto, jak znaleźćxpath
element?Selenium zapewnia wygodną
Select
klasę do pracy zselect -> option
konstrukcjami:Zobacz też:
źródło
najpierw należy zaimportować klasę Select, a następnie utworzyć instancję klasy Select. Po utworzeniu instancji klasy Select można wykonać metody wyboru na tej instancji, aby wybrać opcje z listy rozwijanej. Oto kod
źródło
Mam nadzieję, że ten kod Ci pomoże.
element listy rozwijanej z identyfikatorem
element rozwijany z xpath
element listy rozwijanej z selektorem css
Wybierając „Banan” z menu
ddelement.select_by_index(1)
ddelement.select_by_value('1')
ddelement.select_by_visible_text('Banana')
źródło
Próbowałem wielu rzeczy, ale menu rozwijane znajdowało się wewnątrz tabeli i nie byłem w stanie wykonać prostej operacji wyboru. Działało tylko poniższe rozwiązanie. Tutaj podświetlam rozwijany element i naciskam strzałkę w dół, aż uzyskam żądaną wartość -
źródło
Nie musisz nic klikać. Użyj funkcji znajdź według xpath lub cokolwiek innego, a następnie użyj kluczy wysyłania
Na przykład: HTML:
Pyton:
Otóż to.
źródło
Możesz użyć kombinacji selektora CSS
Zmień 1 w selektorze atrybut = wartość css na wartość odpowiadającą żądanemu owocowi.
źródło
Będzie działać dobrze
źródło
Działa z wartością opcji:
źródło
W ten sposób możesz wybrać wszystkie opcje z dowolnych list rozwijanych.
źródło
for items in range(1,input1): inputs.select_by_index(items)
, ale zaczyna się od drugiego indeksu. Jak mogę uzyskać pierwszą wartość?Najlepszy sposób na użycie
selenium.webdriver.support.ui.Select
klasy do pracy z wyborem rozwijanym, ale czasami nie działa zgodnie z oczekiwaniami z powodu problemów projektowych lub innych problemów z HTML.W tego typu sytuacji możesz również preferować alternatywne rozwiązanie, używając
execute_script()
jak poniżej: -źródło
Zgodnie z dostarczonym kodem HTML:
Aby wybrać
<option>
element z plikuhtml-selectmusisz użyć Select Class . Ponadto, ponieważ musisz wejść w interakcję zmenu rozwijanemusisz wywołać WebDriverWait for theelement_to_be_clickable()
.Aby wybrać
<option>
z tekstem jako Mango zupuścićmożesz użyć, możesz użyć jednej z następujących strategii lokalizacji :Korzystanie z atrybutu i metody ID
select_by_visible_text()
:Używając CSS-SELECTOR i
select_by_value()
metody:Korzystanie z XPATH i
select_by_index()
metody:źródło
public class ListBoxMultiple {
}
źródło