如何解决XPATH正在改变
我正在使用Python 3和Selenium(Chromedriver)。我要使用此命令检查元素。
WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"/html/body/div[3]/div/div[6]/div[2]/div[2]/div/form/div[2]/div[5]/div/div/div/div[2]/button"))).click()
问题是XPATH在两个路径之间不断变化:
/html/body/div[3]/div/div[6]/div[2]/div[2]/div/form/div[2]/div[5]/div/div/div/div[2]/button
/html/body/div[3]/div/div[3]/div[2]/div[2]/div/form/div[2]/div[5]/div/div/div/div[2]/button
我想告诉Python,如果找不到该元素,则应该搜索其他XPATH。
如果您知道一种无需XPATH即可查找元素的方法,那么我也对解决方案感到满意。 如果您通过其包含的文本搜索元素,则无法使用,因为如果使用代理,站点中的语言会更改。 这是按钮的“检查元素”代码:
<button aria-label="Mobilnummer hinzufügen" class="bg-white css-1eajgu7 ex41m6f0 btn-secondary-dark " type="button">Hinzufügen</button>
解决方法
要单击文本为Hinzufügen的元素,可以使用以下任一Locator Strategies:
-
使用
css_selector
:driver.find_element_by_css_selector("button.bg-white.btn-secondary-dark[aria-label='Mobilnummer hinzufügen']").click()
-
使用
xpath
:driver.find_element_by_xpath("//button[@aria-label='Mobilnummer hinzufügen' and text()='Hinzufügen']").click()
理想情况下,要单击element_to_be_clickable()
的{{3}}元素,可以使用以下WebDriverWait之一:
-
使用
CSS_SELECTOR
:WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"button.bg-white.btn-secondary-dark[aria-label='Mobilnummer hinzufügen']"))).click()
-
使用
XPATH
:WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//button[@aria-label='Mobilnummer hinzufügen' and text()='Hinzufügen']))).click()
-
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
尝试使用此XPath:
//div[contains(@class,'mex-mobile-phone')]//button[contains(@class,'btn-secondary-dark')]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。