简体   繁体   English

无法使用python中的Selenium从下拉列表中选择一个值

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

I'm trying to select the year 1989 in the drop down list on this sign up page. 我想在这个注册页面的下拉列表中选择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()

I'm using chrome as a browser and right now it says it cannot find the element. 我使用chrome作为浏览器,现在它说它找不到元素。

Here is the html but if u need something more/different i included the link to the site im using. 这是html,但如果你需要更多/不同的东西我包括我正在使用的网站的链接。 Ps. PS。 not a profesional coder or anything super duper scrub when it comes to coding. 在编码时,不是专业的编码器或任何超级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>

You can actually avoid dealing with the date picker in the first place and set the "date of birth" directly in the input . 实际上,您可以避免首先处理日期选择器,并在输入中直接设置“出生日期”。 For that, we can remove the readonly property from the "date of birth" input and replace the element with it's clone to remove all event listeners which would help to avoid having the datepicker being tied to the input. 为此,我们可以从“出生日期”输入中删除readonly属性,并用它的克隆替换元素以删除所有事件侦听器 ,这有助于避免将datepicker绑定到输入。

Works for me: 适合我:

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.

相关问题 如何在 python 中使用 selenium 下拉列表的 select 值 - How to select value of drop down list with selenium in python 如何使用Selenium / python根据Excel工作表中给出的值从下拉列表中选择一个值 - How to select a value from drop down based on the value given from Excel sheet using selenium/python 循环以从 selenium python 的下拉列表中选择项目 - loop to select items consequently from drop down list in selenium python 单击并使用python 2 selenium选择javascript下拉菜单的值 - click and select value of javascript drop down menu using python 2 selenium 如何使用 Python 与 Selenium 一起 select 下拉菜单值? - How to select a drop-down menu value with Selenium using Python? 如何选择一个下拉菜单值与硒使用 python - how-to-select-a-drop-down-menu-value-with-selenium-using-python 无法从硒python的下拉列表中选择一个值 - Unable to select a value from a drop-down in selenium python 如何从 python selenium 的下拉菜单中获取 select 的值 - How to select a value from drop down menu in python selenium 如何从具有特殊设置的网站上使用Selenium从下拉列表中选择一个值-Python - How to select a value from a drop-down using Selenium from a website with special setting- Python 如何使用 python 从 selenium webdriver 的下拉列表中选择一个值? - How do I select a value from drop down in selenium webdriver using python?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM