0

我正在使用Python和Selenium一起工作,並且使用以下命令創建了一個Web驅動程序實例driver = webdriver.Firefox()並正確創建了Web驅動程序實例。find_element_by_id無法找到元素

在此之後,我試圖通過ID:str_title = driver.find_element_by_id("banner-section-title")獲取元素。但我收到以下錯誤:

NoSuchElementException: Message: Unable to locate element: {"method":"id","selector":"banner-section-title"} 
Stacktrace: 
    at FirefoxDriver.prototype.findElementInternal_ (file:///tmp/tmpR0IR8T/extensions/[email protected]/components/driver-component.js:10299) 
    at FirefoxDriver.prototype.findElement (file:///tmp/tmpR0IR8T/extensions/[email protected]/components/driver-component.js:10308) 
    at DelayedCommand.prototype.executeInternal_/h (file:///tmp/tmpR0IR8T/extensions/[email protected]/components/command-processor.js:12282) 
    at DelayedCommand.prototype.executeInternal_ (file:///tmp/tmpR0IR8T/extensions/[email protected]/components/command-processor.js:12287) 
    at DelayedCommand.prototype.execute/< (file:///tmp/tmpR0IR8T/extensions/[email protected]/components/command-processor.js:12229) 
+0

確實有'ID =「的旗幟形部標題元素''存在於頁面上? –

+0

是的,它是存在的,當我試圖點擊鏈接從我的測試用例使用「點擊鏈接id =橫幅部分標題」它工作正常。但是,當我試圖從關鍵字文件,從.py文件做同樣的事情,我得到了上述錯誤 – Madhuri

回答

2

首先,您必須確定您正在查找的'id'。 由您發佈的錯誤似乎未找到該元素。

所以你可以嘗試也使用

driver.implicitly_wait(<seconds>) 

WebDriverWait(self.driver, 10).until(lambda s: s.find_element_by_id(<element>).is_displayed()) 

試試這個 從selenium.webdriver.support.ui進口從selenium.webdriver.common.keys進口WebDriverWait Keys

page="www.yourwebsite.com" 
self.driver = webdriver.Firefox() 
driver = self.driver 
driver.get(page) 
buffer = self.driver.find_element_by_id("foo") 

那麼,如果有ab utton您可以添加.send_keys(Keys.RETURN)(這是我的登錄表單爲例)

from selenium.webdriver.support.ui import WebDriverWait 
    from selenium.webdriver.common.keys import Keys 

    username="myUserName" 
    password="myPassword" 
    WebDriverWait(self.driver, 10).until(lambda s: s.find_element_by_id("username").is_displayed() 
    textUserName = self.driver.find_element_by_id("username") 
    textUserName.send_keys(userName) 
    WebDriverWait(self.driver, 10).until(lambda s: s.find_element_by_id("password").is_displayed() 
    textPassword = self.driver.find_element_by_id("password") 
    textPassword.clear() 
    textPassword.send_keys(password) 
    btnLogin = self.driver.find_element_by_xpath("//input[@value='Login']") 
    btnLogin.send_keys(Keys.RETURN) 

我希望這能幫助

+0

非常感謝它現在工作正常... – Madhuri

+0

給定的代碼工作正常......但在創建web instanc只有我打開我的網址使用Open Browser關鍵字。所以我不需要在web實例創建後打開url。是否有任何其他方式來處理withoiut包括driver.get(頁),並使元素標識 – Madhuri

+0

如果你不打開網址,你無法驗證內容,所以檢查網頁中的內容的唯一方法是打開它與driver.get(頁面) – ClaudioM