这是关于Python + Selenium auto的。测试
我在尝试使用它的ID检查打开页面上是否有元素时遇到“AttributeError”的问题。
如果我正在检查标题,它对我有用,下面是我的代码的一部分:
driver = webdriver.Firefox()
driver.get("https://accounts.google.com/ServiceLogin?sacu=1&scc=1&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F&hl=ru&service=mail")
wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.ID,"Email")))
self.assertIn("Gmail", driver.title) - works fine
self.assertIn("Email", driver.id) - AttributeError occurred
任何人都可以帮忙解决这个问题吗?
答案 0 :(得分:3)
driver
是webdriver.Firefox
的一个实例,也代表了它当前正在访问的网页。这就是您能够访问title
属性的原因。
但看起来你想要的是页面上元素的id
。如果是这样,你需要先找到它。也许你正在寻找这个?
email_input = driver.find_element_by_id("Email")
self.assertIn("Email", email_input.get_attribute('id'))
如果WebDriver找不到元素,则会引发NoSuchElementException。因此,如果您只想验证页面上有一个元素,其ID中包含“Email”,那么您可以执行查找并断言它没有错误,如下所示:
try:
email_input = driver.find_element_by_id("Email")
except NoSuchElementException:
self.fail("Could not find 'Email' element on page")