我刚开始使用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