我目前正在 twitter 上查找輸入區域的 XPATH,以便我可以使用 bot 在其上撰寫 smth,但我一直收到錯誤的 XPATH。但是,我已經看到其他 ppl 的代碼,盡管他們設法獲得了正確的 XPATH我們從同一個 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')],當我在 inspect 檢查它的位置時,它似乎是同一個元素
別人的 XPATH
uj5u.com熱心網友回復:
不,盡量避免使用很長的 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 將被破壞。總是喜歡與:
- CSS 和 ID
- CSS 和類
- CSS 和屬性
- 帶有文本的 XPATH 包含
- 帶有匹配文本的 XPATH(完全匹配)
- 如果沒有其他方法可能 - 僅使用 XPath
uj5u.com熱心網友回復:
使用 XPath,您可以以不同的方式查找元素。看起來您已經復制了瀏覽器生成的 XPath。但它有點龐大。HTML 元素通常具有唯一的引數,例如 class、id、name 等。因此您需要找到一個來撰寫一個簡短的相對 XPath。
例如,此元素是頁面上唯一具有“notranslate public-DraftEditor-content”類的元素。因此,XPath 可能是:
Xpath=//div[@class="notranslate public-DraftEditor-content"]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/506702.html
上一篇:帶有Cookie的Python請求-被Cookie橫幅阻止的內容
下一篇:無法獲取文本值
