[英]Couldn't find the correct XPATH
I am currently finding the XPATH for the input area on twitter so that i could write smth on it using bot but i keep getting the wrong XPATH.However,i've seen the code from other ppl and they manage to get the correct XPATH eventhough我们从同一个 html 元件中获得。
我得到的 XPATH 是
//*[@id="reactroot"]/div/div/div[2]/main/div/div/div/div[1]/div/div[2]/div/div2/div1/div/div/div/div2/div1/div/div/div/div/div/div2/div/div/div/div/label/div1/div/div/div/div/div/div2/div
他们得到的正确XPATH
是//div[contains(@aria-label, 'Tweet text')]
并且当我在检查中检查它的位置时,它似乎是同一个元素
不,尽量避免很长的 CSS 或很长的 XPath 表达式。 它们难以阅读,不可靠,也使您的代码难看。
尝试这个:
my_element = driver.find_element(By.XPATH, '//div[contains(text(),"What\'s happening")]')
或者:
my_element = driver.find_element(By.CSS, '//div[data-testid="tweetTextarea_0"]')
使用 XPath 是一种不好的做法,因为如果将元素移动到另一个 div 或 span - 您的 XPath 将被破坏。 总是喜欢与:
使用 XPath,您可以通过不同的方式找到元素。 您似乎复制了浏览器生成的 XPath。 但它有点庞大。 HTML元素通常具有唯一的参数,例如class,id,name等。所以你需要找到一个写一个简短的相对XPath。
例如,此元素是页面上唯一具有 class“notranslate public-DraftEditor-content”的元素。 因此,XPath 可以是:
Xpath=//div[@class="notranslate public-DraftEditor-content"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.