在selenium中动态更改xpath - python

问题描述 投票:0回答:1

嗨,无法在循环中通过动态更改 xpath 来编码/自动化 python 脚本 所以,每次我都需要手动输入路径。
下面是示例 xpath(实际上我有更多 xpath 需要输入)和代码

HTML 元素如下所示:

<i data-v-36de69d2="" aria-label="Play" tabindex="0" role="button" class="zm-icon-play icon"></i>
path1= driver.find_element("xpath",'//*[@id="4cc49c1a-bbef-48d2-9ca2-b804db7be94a"]/div[5]/div/div[2]/div[1]/div/div[1]/div/div/div/div[3]/div/div[1]/i').click()
  
path2= driver.find_element("xpath",'//*[@id="cabfd3f2-83ab-4297-ab49-3efd7e0523f3"]/div[5]/div/div[2]/div[1]/div/div[1]/div/div/div/div[3]/div/div[1]/i').click()
  • xpath 列表
xpath_1 = //*[@id="4cc49c1a-bbef-48d2-9ca2-b804db7be94a"]/div[5]/div/div[2]/div[1]/div/div[1]/div/div/div/div[3]/div/div[1]/i
xpath_2 = //*[@id="cabfd3f2-83ab-4297-ab49-3efd7e0523f3"]/div[5]/div/div[2]/div[1]/div/div[1]/div/div/div/div[3]/div/div[1]/i  

如何使用上面列表中的单个 xpath 进行循环动态编码。

python selenium-webdriver
1个回答
0
投票

如果没有更多 HTML 或页面链接,很难说,但我会从下面的代码开始。根据您提供的 HTML,这将抓取集合中的所有图标,循环遍历它们,然后单击每个图标。

wait = WebDriverWait(driver, 10)
icons = wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "i[aria-label='Play']")))
for icon in icons:
    icon.click()
    # do something

注意:根据单击触发的内容、导航到新页面或页面重新加载,这可能会导致陈旧元素异常,您必须对此进行调整。

© www.soinside.com 2019 - 2024. All rights reserved.