从optgroup中选择选项

2024-06-25 06:10:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用以下代码从optgroup中选择一个选项:

currency = Select(driver.find_element_by_xpath("//*[contains(text(), 'currencySelection_dropdown')]"))
currency.select_by_visible_text("U.S. Dollar (USD)")

但我有以下例外:

selenium.common.exceptions.UnexpectedTagNameException: Message: Select only works on <select> elements, not on <script>

我试图从中选择的下拉列表的html源是:

<select name="ppw-0h_PU_CUS_3cf45326-7ff2-49d1-b8a6-7834ec737a68_currencySelection_dropdown" autocomplete="off" id="pmts-portal-bbb6ae6f-f79e-4a31-bc4a-7128cea6c9c9" tabindex="0" class="a-native-dropdown a-declarative" data-action="a-dropdown-select"><option class="a-prompt" value="">Select card currency</option><optgroup><option value="AUD">Australian Dollar (AUD)</option><option value="EUR">Euro (EUR)</option><option value="GBP">Pound Sterling (GBP)</option><option value="USD">U.S. Dollar (USD)</option></optgroup><optgroup><option value="AFN">Afghan Afghani (AFN)</option><option value="ALL">Albanian Lek (ALL)</option><option value="DZD">Algerian Dinar (DZD)</option><option value="AOA">Angolan Kwanza (AOA)</option><option value="ARS">Argentine Peso (ARS)</option><option value="AMD">Armenian Dram (AMD)</option><option value="AWG">Aruban Florin (AWG)</option><option value="AUD">Australian Dollar (AUD)</option><option value="AZN">Azerbaijani Manat (AZN)</option><option value="BSD">Bahamian Dollar (BSD)</option><option value="BHD">Bahraini Dinar (BHD)</option><option value="BDT">Bangladeshi Taka (BDT)</option><option value="BBD">Barbados Dollar (BBD)</option><option value="BYR">Belarusian Ruble (BYR)</option><option value="BZD">Belize Dollar (BZD)</option><option value="BMD">Bermudian Dollar (BMD)</option><option value="BTN">Bhutanese Ngultrum (BTN)</option><option value="BOB">Bolivian Boliviano (BOB)</option><option value="BAM">Bosnia and Herzegovina Convertible Mark (BAM)</option><option value="BWP">Botswana Pula (BWP)</option><option value="BRL">Brazilian Real (BRL)</option><option value="BND">Brunei Dollar (BND)</option><option value="BGN">Bulgarian Lev (BGN)</option><option value="BIF">Burundi Franc (BIF)</option><option value="XOF">CFA Franc BCEAO (XOF)</option><option value="XAF">CFA Franc BEAC (XAF)</option><option value="XPF">CFP Franc (XPF)</option><option value="KHR">Cambodian Riel (KHR)</option><option value="CAD">Canadian Dollar (CAD)</option><option value="CVE">Cape Verde Escudo (CVE)</option><option value="KYD">Cayman Islands Dollar (KYD)</option><option value="CLP">Chilean Peso (CLP)</option><option value="CNY">Chinese Yuan (CNY)</option><option value="COP">Colombian Peso (COP)</option><option value="KMF">Comoro Franc (KMF)</option><option value="CDF">Congolese Franc (CDF)</option><option value="CRC">Costa Rican Colon (CRC)</option><option value="HRK">Croatian Kuna (HRK)</option><option value="CZK">Czech Koruna (CZK)</option><option value="DKK">Danish Krone (DKK)</option><option value="DJF">Djibouti Franc (DJF)</option><option value="DOP">Dominican Peso (DOP)</option><option value="XCD">East Caribbean Dollar (XCD)</option><option value="EGP">Egyptian Pound (EGP)</option><option value="ERN">Eritrean Nakfa (ERN)</option><option value="ETB">Ethiopian Birr (ETB)</option><option value="EUR">Euro (EUR)</option><option value="FKP">Falkland Islands Pound (FKP)</option><option value="FJD">Fiji Dollar (FJD)</option><option value="GMD">Gambian Dalasi (GMD)</option><option value="GEL">Georgian Lari (GEL)</option><option value="GHS">Ghana Cedi (GHS)</option><option value="GIP">Gibraltar Pound (GIP)</option><option value="GTQ">Guatemalan Quetzal (GTQ)</option><option value="GNF">Guinean Franc (GNF)</option><option value="GYD">Guyanese Dollar (GYD)</option><option value="HTG">Haitian Gourde (HTG)</option><option value="HNL">Honduran Lempira (HNL)</option><option value="HKD">Hong Kong Dollar (HKD)</option><option value="HUF">Hungarian Forint (HUF)</option><option value="ISK">Iceland Krona (ISK)</option><option value="INR">Indian Rupee (INR)</option><option value="IDR">Indonesian Rupiah (IDR)</option><option value="IQD">Iraqi Dinar (IQD)</option><option value="ILS">Israeli New Shekel (ILS)</option><option value="JMD">Jamaican Dollar (JMD)</option><option value="JPY">Japanese Yen (JPY)</option><option value="JOD">Jordanian Dinar (JOD)</option><option value="KZT">Kazakhstani Tenge (KZT)</option><option value="KES">Kenyan Shilling (KES)</option><option value="KWD">Kuwaiti Dinar (KWD)</option><option value="KGS">Kyrgyzstani Som (KGS)</option><option value="LAK">Lao Kip (LAK)</option><option value="LVL">Latvian Lats (LVL)</option><option value="LBP">Lebanese Pound (LBP)</option><option value="LSL">Lesotho Loti (LSL)</option><option value="LRD">Liberian Dollar (LRD)</option><option value="LYD">Libyan Dinar (LYD)</option><option value="LTL">Lithuanian Litas (LTL)</option><option value="MOP">Macanese Pataca (MOP)</option><option value="MKD">Macedonian Denar (MKD)</option><option value="MGA">Malagasy Ariary (MGA)</option><option value="MWK">Malawian Kwacha (MWK)</option><option value="MYR">Malaysian Ringgit (MYR)</option><option value="MVR">Maldivian Rufiyaa (MVR)</option><option value="MRO">Mauritanian Ouguiya (MRO)</option><option value="MUR">Mauritian Rupee (MUR)</option><option value="MXN">Mexican Peso (MXN)</option><option value="MDL">Moldovan Leu (MDL)</option><option value="MNT">Mongolian Tugrik (MNT)</option><option value="MAD">Moroccan Dirham (MAD)</option><option value="MZN">Mozambique Metical (MZN)</option><option value="MMK">Myanma Kyat (MMK)</option><option value="NAD">Namibian Dollar (NAD)</option><option value="NPR">Nepalese Rupee (NPR)</option><option value="ANG">Netherlands Antillean Guilder (ANG)</option><option value="TWD">New Taiwan Dollar (TWD)</option><option value="NZD">New Zealand Dollar (NZD)</option><option value="NIO">Nicaraguan Cordoba Oro (NIO)</option><option value="NGN">Nigerian Naira (NGN)</option><option value="NOK">Norwegian Krone (NOK)</option><option value="OMR">Omani Rial (OMR)</option><option value="PKR">Pakistani Rupee (PKR)</option><option value="PAB">Panamanian balboa (PAB)</option><option value="PGK">Papua New Guinean Kina (PGK)</option><option value="PYG">Paraguay Guarani (PYG)</option><option value="PEN">Peruvian Nuevo Sol (PEN)</option><option value="PHP">Philippine Peso (PHP)</option><option value="PLN">Polish Zloty (PLN)</option><option value="GBP">Pound Sterling (GBP)</option><option value="QAR">Qatari Rial (QAR)</option><option value="RON">Romanian New Leu (RON)</option><option value="RUB">Russian Ruble (RUB)</option><option value="RWF">Rwandan Franc (RWF)</option><option value="SHP">Saint Helena Pound (SHP)</option><option value="WST">Samoan Tala (WST)</option><option value="STD">Sao Tome and Principe Dobra (STD)</option><option value="SAR">Saudi Riyal (SAR)</option><option value="RSD">Serbian Dinar (RSD)</option><option value="SCR">Seychelles Rupee (SCR)</option><option value="SLL">Sierra Leonean Leone (SLL)</option><option value="SGD">Singapore Dollar (SGD)</option><option value="SBD">Solomon Islands Dollar (SBD)</option><option value="SOS">Somali Shilling (SOS)</option><option value="ZAR">South African Rand (ZAR)</option><option value="KRW">South Korean Won (KRW)</option><option value="LKR">Sri Lankan Rupee (LKR)</option><option value="SRD">Suriname Dollar (SRD)</option><option value="SZL">Swazi Lilangeni (SZL)</option><option value="SEK">Swedish Krona (SEK)</option><option value="CHF">Swiss Franc (CHF)</option><option value="TJS">Tajikistani Somoni (TJS)</option><option value="TZS">Tanzanian Shilling (TZS)</option><option value="THB">Thai Baht (THB)</option><option value="TOP">Tongan Pa'anga (TOP)</option><option value="TTD">Trinidad and Tobago Dollar (TTD)</option><option value="TND">Tunisian Dinar (TND)</option><option value="TRY">Turkish Lira (TRY)</option><option value="TMT">Turkmenistan New Manat (TMT)</option><option value="AED">U.A.E. Dirham (AED)</option><option value="USD">U.S. Dollar (USD)</option><option value="UGX">Ugandan Shilling (UGX)</option><option value="UAH">Ukrainian Hryvnia (UAH)</option><option value="UYU">Uruguayan Peso (UYU)</option><option value="UZS">Uzbekistan Sum (UZS)</option><option value="VUV">Vanuatu Vatu (VUV)</option><option value="VEF">Venezuelan Bolivar Fuerte (VEF)</option><option value="VND">Vietnamese Dong (VND)</option><option value="YER">Yemeni Rial (YER)</option><option value="ZMK">Zambian Kwacha (ZMK)</option></optgroup></select>

有什么帮助吗?我怎样才能解决这个问题


Tags: newvalueeurselectusdoptionrupeedollar
3条回答

使用xpath尝试以下WebElement:

        WebElement element = driver.findElement(By.xpath("//select[@id=\"pmts-portal-bbb6ae6f-f79e-4a31-bc4a-7128cea6c9c9\"]"));
        element.click();
        Select selectCardCurrency = new Select(element);
        selectCardCurrency.selectByVisibleText("U.S. Dollar (USD)");
currency = Select(driver.find_element_by_xpath("//select[contains(@name, 'currencySelection_dropdown')]"))

您的主要问题是select标记和name标记的不规范

xpath应该对class属性执行contains(),而不是text()text()函数返回元素的内部文本。此外,指定标记名而不是*

currency = Select(driver.find_element_by_xpath("//select[contains(@class, 'currencySelection_dropdown')]"))

相关问题 更多 >