find_element_by_id 无法定位元素
find_element_by_id is not able to locate the elements
我正在使用 Selenium Python 并使用以下命令创建了一个 Web 驱动程序实例 driver = webdriver.Firefox()
并且正确创建了 Web 驱动程序实例。
在此之后,我试图通过以下方式获取具有 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/fxdriver@googlecode.com/components/driver-component.js:10299)
at FirefoxDriver.prototype.findElement (file:///tmp/tmpR0IR8T/extensions/fxdriver@googlecode.com/components/driver-component.js:10308)
at DelayedCommand.prototype.executeInternal_/h (file:///tmp/tmpR0IR8T/extensions/fxdriver@googlecode.com/components/command-processor.js:12282)
at DelayedCommand.prototype.executeInternal_ (file:///tmp/tmpR0IR8T/extensions/fxdriver@googlecode.com/components/command-processor.js:12287)
at DelayedCommand.prototype.execute/< (file:///tmp/tmpR0IR8T/extensions/fxdriver@googlecode.com/components/command-processor.js:12229)
首先,您必须确定要查找的 'id'。
根据您发布的错误,似乎找不到该元素。
所以您也可以尝试使用
driver.implicitly_wait(<seconds>)
或
WebDriverWait(self.driver, 10).until(lambda s: s.find_element_by_id(<element>).is_displayed())
试试这个
来自 selenium.webdriver.support.ui 导入 WebDriverWait
来自 selenium.webdriver.common.keys 导入密钥
page="www.yourwebsite.com"
self.driver = webdriver.Firefox()
driver = self.driver
driver.get(page)
buffer = self.driver.find_element_by_id("foo")
然后,如果有按钮,您可以添加 .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)
希望对您有所帮助
我正在使用 Selenium Python 并使用以下命令创建了一个 Web 驱动程序实例 driver = webdriver.Firefox()
并且正确创建了 Web 驱动程序实例。
在此之后,我试图通过以下方式获取具有 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/fxdriver@googlecode.com/components/driver-component.js:10299)
at FirefoxDriver.prototype.findElement (file:///tmp/tmpR0IR8T/extensions/fxdriver@googlecode.com/components/driver-component.js:10308)
at DelayedCommand.prototype.executeInternal_/h (file:///tmp/tmpR0IR8T/extensions/fxdriver@googlecode.com/components/command-processor.js:12282)
at DelayedCommand.prototype.executeInternal_ (file:///tmp/tmpR0IR8T/extensions/fxdriver@googlecode.com/components/command-processor.js:12287)
at DelayedCommand.prototype.execute/< (file:///tmp/tmpR0IR8T/extensions/fxdriver@googlecode.com/components/command-processor.js:12229)
首先,您必须确定要查找的 'id'。 根据您发布的错误,似乎找不到该元素。
所以您也可以尝试使用
driver.implicitly_wait(<seconds>)
或
WebDriverWait(self.driver, 10).until(lambda s: s.find_element_by_id(<element>).is_displayed())
试试这个 来自 selenium.webdriver.support.ui 导入 WebDriverWait 来自 selenium.webdriver.common.keys 导入密钥
page="www.yourwebsite.com"
self.driver = webdriver.Firefox()
driver = self.driver
driver.get(page)
buffer = self.driver.find_element_by_id("foo")
然后,如果有按钮,您可以添加 .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)
希望对您有所帮助