Python 3. Selenium - как использовать несколько условий с помощью find_element_by_xpath - PullRequest
0 голосов
/ 23 ноября 2018

Я не могу найти решение.Код htlm выглядит следующим образом:

<select class="SelectEquipe2" name="Equipe2Id">
    <option value='2'>AC Ajaccio<option value='3'>GFC Ajaccio<option value='15'>Amiens SC<option value='19'>Angers SCO<option value='30'>...
</select>

Проблема в том, что существует class="SelectEquipe1" Я не могу выбрать значение параметра из второго класса.Я попробовал следующий код на Python 3.

driver.find_element_by_xpath('//select[@class,"SelectEquipe2"]/option[@value="15"]').click()

ИЛИ

driver.find_element_by_xpath('//select[contains(@class,"SelectEquipe2") and contains(.,"15")]')

безуспешно ...

У вас есть какое-нибудь решение?

РЕДАКТИРОВАТЬ:

Фактический код HTML:

 <select class="SelectEquipe2" name="Equipe2Id">
 <option value='41'selected>AJ Auxerre<option value='47'>SC Bastia<option value='65'>FC Girondins de Bordeaux<option value='76'>Stade Brestois 29<option value='82'>SM Caen<option value='139'>Dijon FCO<option value='177'>EA Guingamp<option value='201'>Istres FC<option value='224'>Havre AC<option value='226'>Le Mans FC<option value='231'>RC Lens<option value='242'>Lille OSC<option value='251'>FC Lorient<option value='258'>Olympique Lyonnais<option value='275'>Olympique de Marseille<option value='285'>FC Metz<option value='290'>AS Monaco FC<option value='299'>Montpellier Hérault SC<option value='308'>AS Nancy Lorraine<option value='310'>FC Nantes<option value='314'>OGC Nice<option value='339'>Paris Saint-Germain FC<option value='373'>Stade de Reims<option value='375'>Stade Rennais FC<option value='398'>AS Saint-Etienne<option value='429'>CS Sedan<option value='439'>FC Sochaux-Montbéliard<option value='442'>RC Strasbourg Alsace<option value='568'>Thonon Évian FC<option value='455'>Toulouse FC<option value='464'>ESTAC Troyes<option value='471'>Valenciennes FC       
 </select>

Мне удалось выбрать значение параметра для первого класса "SelectEquipe1", используя:

driver.find_element_by_xpath ('// select [@ class = "SelectEquipe1"]'). click () driver.find_element_by_xpath ("// option [@ value = '339']"). click ()

, но это не такработать для 2-го класса, он всегда принимает параметры первого класса, тогда как я хочу, чтобы он взял второй.

Ответы [ 2 ]

0 голосов
/ 25 ноября 2018

Ответ был просто для использования:

driver.find_element_by_xpath("//select[@class='SelectEquipe2']/option[@value='258']").click()

спасибо всем

0 голосов
/ 23 ноября 2018

После проверки предоставленного вами HTML .Понятно, что закрывающих тегов для тегов <option> нет.Вы не сможете выбрать второй вариант, если для первого варианта не будет закрывающего тега </option>.

Ваш HTML должен выглядеть следующим образом.

<select class="SelectEquipe2" name="Equipe2Id">
<option value='2'>AC Ajaccio</option><option value='3'>GFC Ajaccio</option><option value='15'>Amiens SC</option><option value='19'>Angers SCO</option><option value='30'></option>...
</select>

Все дочерние узлы должны быть правильно закрыты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...