Python 3. Selenium-如何在find_element_by_xpath中使用多个条件

时间:2018-11-23 11:27:34

标签: python selenium xpath

我找不到解决方案。 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()

OR

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 个答案:

答案 0 :(得分:0)

检查您提供的 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>

所有子节点必须正确关闭

答案 1 :(得分:0)

答案仅是使用:

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

谢谢大家