Невозможно напечатать текст параметров в select в Селен Python - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь распечатать текст всех опций в элементе select.Но результат - просто пустая строка, несмотря на то, что длина этого списка верна.Я читал некоторые другие подобные вопросы, но у меня нет решения.Вот некоторые из моих попыток: Попытка 1:

select = UI.Select(browserdriver.find_element_by_xpath("//select[@id='Xuất xứ']"))
#select = Select(browserdriver.find_element_by_xpath("//select[@id='Xuất xứ']"))
options = select.options
print(len(options))
for item in options:
    print(item.text, item.get_attribute('value'))

Результат:

17

 ko972
 ko973
 ko974
 ko975
 ko976
 ko977
 ko978
 ko979
 ko980
 ko981
 ko982
 ko983
 ko984
 ko985
 ko986
 ko987

-> Это означает, что xpath имеет значение true, и я могу получить атрибут значения этих параметров,17 лен вариантов.Но item.text возвращает ноль. Вот HTML-код этого элемента выбора:

<select class="form-control  selectized" data-bind="selectize:SelectedAtt, selectizeOptions:AttributeValues, optionsText: 'Value', value: SelectedAtt, enable: $parent.ProductDetail().CanEdit, optionsCaption: 'Vui lòng chọn'
                                 , attr: {id: $data.Name() }
                                " tabindex="-1" id="Xuất xứ" style="display: none;">
<option value="">Vui lòng chọn</option>
<option value="ko947">Hàn Quốc</option>
<option value="ko948">Mỹ</option>
<option value="ko949">Anh</option>
<option value="ko950">Pháp</option>
<option value="ko951">Thụy Sỹ</option>
<option value="ko952">Nga</option>
<option value="ko953">Na Uy</option>
<option value="ko954">Nhật</option>
<option value="ko955">Đài Loan</option>
<option value="ko956">Trung Quốc</option>
<option value="ko957">indonesia</option>
<option value="ko958">Singapore</option>
<option value="ko959">Malaysia</option>
<option value="ko960">Khác</option>
<option value="ko961">Việt nam</option>
<option value="ko962">Việt Nam</option>
</select>

попытка 2:

options=browserdriver.find_elements_by_xpath("//*[@id='Xuất xứ']/option")
print(len(options))
for item in options:
     print(item.text)

Результат тот же, что он возвращает истинную длину параметров, нокаждый элемент в этом списке является нулевым.Результат попытки 2:

17

















Пожалуйста, поделитесь мне решением этой проблемы.Я хочу получить текст этих опций.Большое спасибо

Некоторые из моих чтений: https://sqa.stackexchange.com/questions/1355/what-is-the-correct-way-to-select-an-option-using-seleniums-python-webdriver/2258#2258

Перечисление значений параметров выбора с Selenium и Python

Как напечатать текствыбранной опции, выбранной методом selectByVisibleText в селене

Ответы [ 2 ]

1 голос
/ 18 июня 2019

Рассмотрите возможность использования innerText свойства

for item in select.options:
    print(item.get_attribute('innerText'), item.get_attribute('value'))

Также может быть полезно, если вы рассмотрите шаблон проектирования Модель объекта страницы , это позволит вам разделитьтестовая логика от DOM и процесс разработки тестов и особенно поддержка / исправление будут быстрее и проще.

Дополнительная информация: Объекты страницы

0 голосов
/ 18 июня 2019

Для печати текстового значения параметров. Используйте значение свойства innerHTML

options=browserdriver.find_elements_by_xpath("//*[@id='Xuất xứ']/option")
print(len(options))
for item in options:
     print(item.get_attribute('innerHTML'))

Вывод:

17
Vui lòng chọn
Hàn Quốc
Mỹ
Anh
Pháp
Thụy Sỹ
Nga
Na Uy
Nhật
Đài Loan
Trung Quốc
indonesia
Singapore
Malaysia
Khác
Việt nam
Việt Nam
...