簡體   English   中英

無法使用python中的Selenium從下拉列表中選擇一個值

[英]Cant select a value from a drop down list using Selenium in python

我想在這個注冊頁面的下拉列表中選擇1989年。

driver.get("https://club.pokemon.com/us/pokemon-trainer-club/sign-up/")
elem = driver.find_element_by_id("id_dob")
elem.send_keys(Keys.RETURN)
elem = driver.find_element_by_class_name("picker__footer")

find_element_by_xpath("//*[@id='sign-up-theme']/option[@value='1989']").click()

Select(driver.find_element_by_css_selector("#sign-up-theme")).select_by_value(1989).click()

我使用chrome作為瀏覽器,現在它說它找不到元素。

這是html,但如果你需要更多/不同的東西我包括我正在使用的網站的鏈接。 PS。 在編碼時,不是專業的編碼器或任何超級duper磨砂膏。

<div class="custom-select-wrapper" style="visibility: visible;"><select class="year" style="display: none;"><option value="1936">1936</option><option value="1937">1937</option><option value="1938">1938</option><option value="1939">1939</option><option value="1940">1940</option><option value="1941">1941</option><option value="1942">1942</option><option value="1943">1943</option><option value="1944">1944</option><option value="1945">1945</option><option value="1946">1946</option><option value="1947">1947</option><option value="1948">1948</option><option value="1949">1949</option><option value="1950">1950</option><option value="1951">1951</option><option value="1952">1952</option><option value="1953">1953</option><option value="1954">1954</option><option value="1955">1955</option><option value="1956">1956</option><option value="1957">1957</option><option value="1958">1958</option><option value="1959">1959</option><option value="1960">1960</option><option value="1961">1961</option><option value="1962">1962</option><option value="1963">1963</option><option value="1964">1964</option><option value="1965">1965</option><option value="1966">1966</option><option value="1967">1967</option><option value="1968">1968</option><option value="1969">1969</option><option value="1970">1970</option><option value="1971">1971</option><option value="1972">1972</option><option value="1973">1973</option><option value="1974">1974</option><option value="1975">1975</option><option value="1976">1976</option><option value="1977">1977</option><option value="1978">1978</option><option value="1979">1979</option><option value="1980">1980</option><option value="1981">1981</option><option value="1982">1982</option><option value="1983">1983</option><option value="1984">1984</option><option value="1985">1985</option><option value="1986">1986</option><option value="1987">1987</option><option value="1988">1988</option><option value="1989">1989</option><option value="1990">1990</option><option value="1991">1991</option><option value="1992">1992</option><option value="1993">1993</option><option value="1994">1994</option><option value="1995">1995</option><option value="1996">1996</option><option value="1997">1997</option><option value="1998">1998</option><option value="1999">1999</option><option value="2000">2000</option><option value="2001">2001</option><option value="2002">2002</option><option value="2003">2003</option><option value="2004">2004</option><option value="2005">2005</option><option value="2006">2006</option><option value="2007">2007</option><option value="2008">2008</option><option value="2009">2009</option><option value="2010">2010</option><option value="2011">2011</option><option value="2012">2012</option><option value="2013">2013</option><option value="2014">2014</option><option value="2015">2015</option><option value="2016" selected="">2016</option></select><div class="custom-select-menu" tabindex="0"><label class="styled-select button-black opened">2016</label><div class="custom-scrollbar custom-select-scrollbar" style="height: 200px; display: block;"><div class="viewport"><ul data-select-name="undefined" class="overview"><li data-option-value="2016" class="selected">2016</li><li data-option-value="2015" class="">2015</li><li data-option-value="2014" class="">2014</li><li data-option-value="2013" class="">2013</li><li data-option-value="2012" class="">2012</li><li data-option-value="2011" class="">2011</li><li data-option-value="2010" class="">2010</li><li data-option-value="2009" class="">2009</li><li data-option-value="2008" class="">2008</li><li data-option-value="2007" class="">2007</li><li data-option-value="2006" class="">2006</li><li data-option-value="2005" class="">2005</li><li data-option-value="2004" class="">2004</li><li data-option-value="2003" class="">2003</li><li data-option-value="2002" class="">2002</li><li data-option-value="2001" class="">2001</li><li data-option-value="2000" class="">2000</li><li data-option-value="1999" class="">1999</li><li data-option-value="1998" class="">1998</li><li data-option-value="1997" class="">1997</li><li data-option-value="1996" class="">1996</li><li data-option-value="1995" class="">1995</li><li data-option-value="1994" class="">1994</li><li data-option-value="1993" class="">1993</li><li data-option-value="1992" class="">1992</li><li data-option-value="1991" class="">1991</li><li data-option-value="1990" class="">1990</li><li data-option-value="1989" class="">1989</li><li data-option-value="1988" class="">1988</li><li data-option-value="1987" class="">1987</li><li data-option-value="1986" class="">1986</li><li data-option-value="1985" class="">1985</li><li data-option-value="1984" class="">1984</li><li data-option-value="1983" class="">1983</li><li data-option-value="1982" class="">1982</li><li data-option-value="1981" class="">1981</li><li data-option-value="1980" class="">1980</li><li data-option-value="1979" class="">1979</li><li data-option-value="1978" class="">1978</li><li data-option-value="1977" class="">1977</li><li data-option-value="1976" class="">1976</li><li data-option-value="1975" class="">1975</li><li data-option-value="1974" class="">1974</li><li data-option-value="1973" class="">1973</li><li data-option-value="1972" class="">1972</li><li data-option-value="1971" class="">1971</li><li data-option-value="1970" class="">1970</li><li data-option-value="1969" class="">1969</li><li data-option-value="1968" class="">1968</li><li data-option-value="1967" class="">1967</li><li data-option-value="1966" class="">1966</li><li data-option-value="1965" class="">1965</li><li data-option-value="1964" class="">1964</li><li data-option-value="1963" class="">1963</li><li data-option-value="1962" class="">1962</li><li data-option-value="1961" class="">1961</li><li data-option-value="1960" class="">1960</li><li data-option-value="1959" class="">1959</li><li data-option-value="1958" class="">1958</li><li data-option-value="1957" class="">1957</li><li data-option-value="1956" class="">1956</li><li data-option-value="1955" class="">1955</li><li data-option-value="1954" class="">1954</li><li data-option-value="1953" class="">1953</li><li data-option-value="1952" class="">1952</li><li data-option-value="1951" class="">1951</li><li data-option-value="1950" class="">1950</li><li data-option-value="1949" class="">1949</li><li data-option-value="1948" class="">1948</li><li data-option-value="1947" class="">1947</li><li data-option-value="1946" class="">1946</li><li data-option-value="1945" class="">1945</li><li data-option-value="1944" class="">1944</li><li data-option-value="1943" class="">1943</li><li data-option-value="1942" class="">1942</li><li data-option-value="1941" class="">1941</li><li data-option-value="1940" class="">1940</li><li data-option-value="1939" class="">1939</li><li data-option-value="1938" class="">1938</li><li data-option-value="1937" class="">1937</li><li data-option-value="1936" class="">1936</li></ul></div></div><input type="hidden" name="undefined" value="2016"></div></div>

實際上,您可以避免首先處理日期選擇器,並在輸入中直接設置“出生日期”。 為此,我們可以從“出生日期”輸入中刪除readonly屬性,並用它的克隆替換元素以刪除所有事件偵聽器 ,這有助於避免將datepicker綁定到輸入。

適合我:

from selenium import webdriver


driver = webdriver.Firefox()
driver.get("https://club.pokemon.com/us/pokemon-trainer-club/sign-up/")

elem = driver.find_element_by_id("id_dob")
driver.execute_script("arguments[0].removeAttribute('readonly'); arguments[0].removeAttribute('class');", elem)
driver.execute_script("""
var clone = arguments[0].cloneNode();
while (arguments[0].firstChild) {
  clone.appendChild(arguments[0].lastChild);
}
arguments[0].parentNode.replaceChild(clone, arguments[0]);
""", elem)

elem = driver.find_element_by_id("id_dob")
elem.clear()
elem.send_keys("1989-02-20")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM