首页 > 解决方案 > 如何使用 selenium Python 单击具有动态 ID 的按钮

问题描述

我尝试使用 selenium 按下按钮,但每次访问网站时都会生成 ID。我尝试使用从 Google Chrome 获得的 xpath 和 Css 选择器,但它似乎使用的是 ID,因此它不可靠。继承人的HTML代码

<ul data-componentname="gender">

  <li id="4ed02d40-a727-4c69-9bb6-b39bcb752bfc" class="">
    <input type="button">
    <span>Male</span>
  </li>

  <li id="76e7055e-ac37-4d12-bec3-27f9ca3410c0" class="">
    <input type="button">
    <span>Female</span>
  </li>

标签: python-3.xseleniumselenium-webdriver

解决方案


单击男性女性按钮诱导WebDriverWaitelement_to_be_clickable跟随xpath

点击男性:

WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//ul[@data-componentname='gender']//li[./span[text()='Male']]/input[@type='button']"))).click()

点击女性:

WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//ul[@data-componentname='gender']//li[./span[text()='Female']]/input[@type='button']"))).click()

注意:您需要导入以下内容。

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

已编辑

elementmale=WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//ul[@data-componentname='gender']//li[./span[text()='Male']]/input[@type='button']")))
driver.execute_script("arguments[0].click();", elementmale)

推荐阅读