我刚开始使用Python编写Selenium,我一直在尝试通过名称,id,xpath找到该按钮,然后单击它,但没有任何效果。

问题是,我找不到按钮,因为xpath一直在变化,ID名称只是“按钮”,以这种方式定位它也不起作用,因为页面上还有很多其他按钮。如何找到该元素?

这是网站的HTML:

<ul data-componentname="gender">

  <li id="b27296be-e8da-4d5a-acb6-d1674bf88568" class="">
    <input type="button">
    <span>Male</span>
  </li>

  <li id="32bf7074-6b69-41bb-9869-cf71ac42686f" class="">
    <input type="button">
    <span>Female</span>
  </li>




这是我尝试过的:

clickGender = browser.find_element_by_xpath("b27296be-e8da-4d5a-acb6-d1674bf88568")


任何帮助是极大的赞赏。

最佳答案

根据您共享的HTML,找到与文本相对应的动态按钮(男或女),然后单击它,您必须诱使WebDriverWait使元素可单击,并且可以使用以下解决方案:


男:

WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, "//ul[@data-componentname='gender']//li//span[contains(.,'Male')]//preceding::input[1]"))).click()

女:

WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, "//ul[@data-componentname='gender']//li//span[contains(.,'Female')]//preceding::input[1]"))).click()



注意:您需要以下导入:

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

10-04 15:32
查看更多