我想使用 selenium 來查找一個 div:

我的代碼是:
self.browser.find_element_by_xpath('//div[@]').click()
但我得到了錯誤:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div[@hljs-string">"]"}
我應該怎么做才能找到這個 div?
uj5u.com熱心網友回復:
您可以嘗試使用 javascript 將元素的樣式值更改為阻止。
self.driver.execute_script("document.getElementsByClassName("class-name")[0].style.display = 'block';")
然后嘗試訪問該元素。
uj5u.com熱心網友回復:
短的:
對于示例頁面 html,您的 xpath 看起來是正確的,但螢屏截圖上的類以空格字符結尾。(這可能是原因)。
更長:
如果你到達NoSuchElementException那里可能有3種情況:
您的 div 存在于 中
iframe,因此您需要driver.switch_to.iframe在呼叫 find_element 之前使用命令切換到 iframe 。您正在尋找與類完全匹配的 div。class 屬性有時會在某些操作后更改,可以添加或洗掉某些類。因此,嘗試使用
//div[contains(@class, 'your_class')]. 我明白了,您的課程以螢屏截圖上的空格字符結尾,它可能會影響。該元素確實不存在于頁面上。嘗試截圖,或列印頁面源并查找元素,可能會帶來更多有關真正原因的資訊。
uj5u.com熱心網友回復:
該DIV標簽是后裔一個標簽。
要單擊后代DIV,您可以使用以下任一定位器策略:
使用css_selector:
self.browser.find_element(By.CSS_SELECTOR, "a[href='#/sportVenueBookBC'] div.bh-headerBar-nav-item.").click()使用xpath:
self.browser.find_element(By.XPATH, "//a[@href='#/sportVenueBookBC']//div[@class='bh-headerBar-nav-item ']").click()
但是,所需的元素是動態元素,因此要單擊該元素,您需要為element_to_be_clickable()引入WebDriverWait,您可以使用以下任一定位器策略:
使用CSS_SELECTOR:
WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a[href='#/sportVenueBookBC'] div.bh-headerBar-nav-item."))).click()使用XPATH:
WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@href='#/sportVenueBookBC']//div[@class='bh-headerBar-nav-item ']"))).click()注意:您必須添加以下匯入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
參考
您可以在以下位置找到一些關于NoSuchElementException的相關討論:
- selenium.common.exceptions.NoSuchElementException:訊息:沒有這樣的元素:嘗試使用硒單擊“下一步”按鈕時無法定位元素
- python中的硒:NoSuchElementException:訊息:沒有這樣的元素:無法定位元素
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/385905.html
標籤:Python 硒 路径 css-选择器 网络驱动程序等待
上一篇:一個測驗中的變數不能用于其他測驗(使用了變數“令牌”,但未定義)
下一篇:進行多條件求和的回圈
