Как выбрать элемент из выпадающего меню через селен и питон?

1

Я пытаюсь играть с тестами автологина через селен драйвер и Python. Я использую этот сайт https://invoiceaccess.pgiconnect.com/ Что я сделал:


    from selenium import webdriver
    driver = webdriver.Chrome()

    driver.get("https://invoiceaccess.pgiconnect.com")
    driver.find_element_by_id("LoginId").send_keys("test-account")
    driver.find_element_by_id("LoginPassword").send_keys("test-password")
    #driver.find_element_by_id("submit").click()

Всё работает, но у меня проблема с выбором из выпадающего меню. Например, у меня есть HTML-код этого меню.

    <select class="regiondropdown" data-val="true" data-val-required="Please Select Region" id="Region" name="Region"><option value="">Select Region</option>
    <option value="us">America</option>
    <option value="europe">Europe</option>
    <option value="apac">APAC</option>
    </select>

Я попробовал это:

    element = driver.find_element_by_xpath("//select[@name='Region']")
    all_options = element.find_elements_by_tag_name("option")
    for option in all_options:
        print("Value is: %s" % option.get_attribute("US"))
        option.click()

Например, мне нужно выбрать America, но она выбирает APAC. Где я сделал ошибку, кто может мне помочь, пожалуйста?

  • 0
    Вы хотите получить внутренний текст каждой опции? Или конкретно вариант, который имеет «нас» для стоимости?
  • 0
    @MGC Я хочу выбрать US
Теги:
python-3.x
selenium
selenium-webdriver
selenium-chromedriver

3 ответа

2
Лучший ответ

Чтобы получить конкретную опцию вашего элемента select которого us присваиваем значение, вы можете использовать класс Select selenium, чтобы сделать что-то вроде этого:

from selenium.webdriver.support.ui import Select

option = Select(
    driver.find_element_by_xpath("//select[@name='Region']")
).select_by_value("us")
print(option.text) # Should print 'America'

Или вы также можете сделать это с помощью селекторов CSS:

selec = driver.find_element_by_xpath("//select[@name='Region']")
option = selec.find_element_by_css_selector("option[value=\"us\"]")
print(option.text) # Should print 'America'
2

Общий код для списка с помощью xpath и выберите

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://invoiceaccess.pgiconnect.com/")
driver.maximize_window()
def ListItemSelection(countrycode):
    driver.find_element_by_xpath("//select/option[@value='" + countrycode + "']").click()

ListItemSelection("us")
time.sleep(1)
ListItemSelection("europe")
time.sleep(1)
ListItemSelection("apac")
time.sleep(1)
driver.quit()
2

Чтобы выбрать значение Америка из выпадающего списка, попробуйте этот код. Это сработало для меня.

from selenium import webdriver
from selenium.webdriver.support.ui import Select

driver=webdriver.Chrome("Path of the Chrome driver" + "chromedriver.exe" )
driver.get("https://invoiceaccess.pgiconnect.com")

select =Select(driver.find_element_by_id("Region"))
select.select_by_value("us")

Ещё вопросы

Сообщество Overcoder
Наверх
Меню