【问题标题】:Python 3. Selenium - how to use multiple conditions with find_element_by_xpathPython 3. Selenium - 如何使用 find_element_by_xpath 的多个条件
【发布时间】:2018-11-25 20:29:50
【问题描述】:

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

但这不适用于二等舱,它总是采用一等舱选项,而我希望它采用二等舱选项。

【问题讨论】:

  • 您能否确认您是否在问题中提供了实际的 HTML 或提供了量身定制的 HTML
  • 那是来自代码源的实际HTML,我没有把所有的选项值都放上去,而是这样的结构

标签: python selenium xpath


【解决方案1】:

检查您提供的HTML 后。很明显,&lt;option&gt; 标签没有结束标签。除非第一个选项有关闭 &lt;/option&gt; 标记,否则您将无法选择第二个选项。

您的 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>

必须正确关闭所有子节点

【讨论】:

    【解决方案2】:

    答案只是使用:

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

    谢谢大家

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      • 2022-01-11
      相关资源
      最近更新 更多