在 Selenium/Python 中尝试通过 xpath 查找所有符合特定条件的按钮,以便可以单击

In Selenium/Python trying to find all Buttons with that meet certain criteria by xpath so it can be clicked

Screenshot

我目前正在使用 Selenium 和 Python 创建一个脚本来帮助在网站上预订免费实习点,这样您就不必一直检查它。

所以我试图表达一个 xpath,它将引导 selenium 找到所有空闲点并单击“预订”按钮。

我的第一个问题是,您是否可以以某种方式缩短下面代码中的循环,这样它就不必一个一个地检查每个值,而只需找到所有按钮在文本属性中有 x as a value >=1。 (text属性包含当前可用名额数量和总名额。

第二个问题 将是如何处理有空位的按钮,以便可以点击它们,并最终有望预订。首先,我尝试使用 selenium 遍历 html table 的每个单元格,以检查是否可以单击按钮和预订地点,但我认为这需要太多时间

browser.get('https://www.pj-portal.de/index_hro.php?PAGE_ID=101')

delay = 2


for x in range(1,20):

 browser.find_elements_by_xpath(f"//*[contains(text(),'{x}/')]")
 print("found")
 Liste1 = browser.find_elements_by_xpath(f"//*[contains(text(),'{x}/')]")
 print(len(Liste1))




 Wunschbutton = browser.find_elements_by_xpath(//td[text()='1/3']/preceding-sibling::td[2])
 Wunschbutton.click()

Screenshot of webpage

HTML 页面的一部分:

<td class="aktion verfuegbar  buchungsphase  border_links"
<img class="aktion_tertial_wunsch_setzen " data- 
 pj_traineeship_tertial_id="166037" data- 
 pj_general_traineeship_id="8487" data-changetype="24" 
 src="images/wunsch_setzen_button.svg" alt="+" title="Wunsch"> 
</td><img class="aktion_tertial_wunsch_setzen " data- 
 pj_traineeship_tertial_id="166037" data- 
 pj_general_traineeship_id="8487" data-changetype="24" 
 src="images/wunsch_setzen_button.svg" alt="+" title="Wunsch">

<td class="hinweise_leer  verfuegbar  buchungsphase "> </td>

<td class=" tertial_verfuegbarkeit verfuegbar  buchungsphase  
">1/3</td>

也许有人有想法。提前致谢!

我不知道你是怎么算出范围的

range(1,20):

提前。

为了回答您的第一个问题,我想说您可以从 xpath 缩小搜索范围。

像这样:

//*[starts-with(text(),'1/')]

现在使用此 XPath,您将确保您只查找第三列中具有 1/* 的行。

回答您的第二个问题我想您可以在row color 进行检查,如果它是红色的,则表示所有座位都可用或没有座位可用。 [取决于应用程序的设计]。需要更多上下文才能回答这部分。