AttributeError:' WebDriver'对象没有属性' id'

时间:2014-09-28 18:08:06

标签: python-2.7

这是关于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

任何人都可以帮忙解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

driverwebdriver.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")