简体   繁体   English

使用 selenium XPATH 查找元素的替代方法?

[英]Alternatives to using selenium XPATH to find an element?

On this website, I'm trying to find an element based on its XPATH, but the XPATH keeps changing.在这个网站上,我试图根据其 XPATH 查找元素,但 XPATH 一直在变化。 What's the next best alternative?下一个最佳选择是什么?

Snippet from website来自网站的片段

<button class="KnkXXg vHcWfw T1alpA kiPMng AvEAGQ vM2UTA DM1_6g _-kwXsw Mqe1NA SDIrVw edrpZg" type="button" aria-expanded="true"><span class="nW7nAQ"><div class="VpIG5Q"></div></span></button>

XPATH:路径:

//*[@id="__id15"]/div/div/div[1]/div[2]/div
#Sometimes id is a number between 15-18

//*[@id="__id23"]/div/div/div[1]/div[2]/div
#Sometimes id is a number between 13-23

Here's how I use the code:这是我如何使用代码:

element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, """//*[@id="__id3"]/div/div/div[1]/div[2]/div/div/div/button"""))).click()

I've tried clicking the element by finding the button class, but for whatever reason it won't do anything.我尝试通过查找按钮类来单击元素,但无论出于何种原因,它都不会执行任何操作。

element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "KnkXXg vHcWfw T1alpA kiPMng AvEAGQ vM2UTA DM1_6g _-kwXsw Mqe1NA SDIrVw edrpZg"))).click()

如果部分文本不断变化,您可以在 xpath 中使用 contains。

//*[contains(@id,"__id"]/div/div/div[1]/div[2]/div

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM