Как выбрать значение из выпадающего списка на основе значения, указанного в листе Excel, с использованием селена / питона - PullRequest
1 голос
/ 04 июля 2019

В настоящее время я учусь автоматизировать веб-приложение, содержащее раскрывающийся список. Я могу выбрать значение из раскрывающегося списка, передав его непосредственно в xpath. Теперь я пытаюсь выбрать значение из раскрывающегося списка.на значение, указанное в листе Excel, а не давать его напрямую. Я не знаю, как это сделать.

Пожалуйста, найдите образец HTML

<select class="parent" id="parent_name" name="parentId">                                      
  <option value="1">A</option>
  <option value="2">B</option>
  <option value="3">C</option>
  </select>

Пожалуйста, найдите код, который я пробовалраскрывающийся список

dropdown=driver.find_element_by_xpath('//select[@class="parent"]//option[2]');
dropdown.click();

Для выбора значения из Excel для других вещей, таких как текстовое поле, я использую следующий код

driver = webdriver.Chrome  
driver.fullscreen_window();
driver.get('url');
time.sleep(5) 
Workbook=xlrd.open_workbook("excel path")
Details = Workbook.sheet_by_index(0);
city=Details .cell(1,0)
Citytextbox=driver.find_element_by_xpath('//input[@id="city"]');
Citytextbox.send_keys(city.value);

То, что я ожидаю, это если я даю значение как "A"в Excel, он должен быть в состоянии выбрать его из выпадающего списка, а не жестко кодировать его, используя spyder-python 3.7.

Обновление : пробовал следующие два метода, я столкнулся с проблемой ниже.можете ли вы указать мне, в чем может быть проблема?Первый метод, кажется, замечает, что происходит, код выполняется даже при выборе раскрывающегося списка, и никакой ошибки не отображается. Кажется, он не вошел в код

 class test:
        def test(self):
           type=details.cell(1,13);
    dropdown=selected(self.driver.find_element_by_xpath('//select[@class="parent"]')); 
               dropdown.select_by_value(str(type));
               time.sleep(5);

Второй метод : Он показывает, что -module объект не является вызываемым. Добавленный импорт выбирается как выбранный

type=details.cell(1,13);
dropdown=selected(driver.find_element_by_xpath('//select[@class="parent"]'));
dropdown.select_by_value(str(type));

Когда я пытаюсь выполнить описанный выше метод, я получаю эту ошибку TypeError: объект 'module' не вызывается

1 Ответ

0 голосов
/ 04 июля 2019

Вы захотите использовать Выбрать объект .Прежде всего извлеките соответствующее значение из вашего документа Excel (вам нужно настроить ниже, чтобы нацелить на соответствующую ячейку, я привел пример, основанный на вашем вопросе):

Workbook = xlrd.open_workbook("excel path")
Details = Workbook.sheet_by_index(0);
selectValue = Details .cell(1,0)

Затем вынужно будет использовать значение, как показано ниже:

select = Select(self.driver.find_element_by_id("parent_name")) 
select.select_by_value(str(selectValue))
...