Параметры переупорядочения Selenium Python

#python #selenium

Вопрос:

Python 3.9 и Selenium 4.0.0

HTML-код:

 lt;select id="selectedDisplayColumns" name="selectedDisplayColumns" multiple="multiple" size="8"gt;  lt;option value="first_name"gt;First Namelt;/optiongt;  lt;option value="last_name"gt;Last Namelt;/optiongt;  lt;option value="phone"gt;Phonelt;/optiongt;  lt;option value="email"gt;Emaillt;/optiongt;  lt;option value="city"gt;Citylt;/optiongt;  lt;option value="state"gt;Statelt;/optiongt; lt;/selectgt;  

Всякий раз, когда я запускаю отчет, эти параметры могут перепутаться, поэтому first_name может быть 4-й вариант вместо 1-го, но иногда это может быть 1-й вариант.

Поэтому я пытаюсь в основном заставить selenium изменить его порядок так, чтобы он всегда был first name первым (есть кнопка «Изменить порядок» с xpath //*[@id="configureDisplayColumnsContainer"]/fieldset/div[2]/p/input[4] и //*[@id="configureDisplayColumnsContainer"]/fieldset/div[2]/p/input[5] которая является move up и move down соответственно. Я должен сначала выбрать опцию, а затем нажать кнопку переместить вверх или вниз, чтобы изменить порядок.

Вот мой текущий код:

 from selenium.webdriver.support.ui import Select  # xpath for the option menu menu = Select(driver.find_element(By.Xpath, '//*[@id="selectedDisplayColumns"]') selector = Select(menu)  for index in range(1, len(menu)-1):  print(menu[index])  

Ответ №1:

Я бы рекомендовал использовать функцию .getAttribute для извлечения имени атрибута. Вам нужно будет настроить это для точного макета страницы, которую вы очищаете, но я привел краткий пример, демонстрирующий эту функцию:

 element = driver.find_element_by_xpath("[@id='configureDisplayColumnsContainer']/fieldset/div[2]/p/input[0]") attribute = element.get_attribute("value") print(attribute)  

Это должно вывести все, что является первым атрибутом в определенном xpath. В вашем примере кода он должен выводить «first_name». С этого момента остается только придумать организационную систему, которая наилучшим образом соответствует вашим потребностям в очистке.