AttributeError: type object 'By' has no attribute 'name'

AttributeError: type object 'By' has no attribute 'name'

我正在做一个可以进入我的电子邮件的 selenium 程序,但是我遇到了 By 的问题,而且它不能是 By.name("") 或者看起来是这样。

这是代码中提到的部分:(运行 on windows 7):

psswd = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.name, "password")))
psswd.send_keys("MyPassword")

你快到了。您需要进行如下简单更改:

  • 您需要将 name 替换为 NAME

实际上,您的代码行将是:

psswd = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.NAME, "password")))
psswd.send_keys("MyPassword")

如果您遇到此错误,则会出现一些例外情况,例如:

  1. 你正在使用 By.name 也许你应该使用 By.NAME
  2. 您可能会得到对象列表!
  3. 你可能没有导入 By,要导入它写 from selenium.webdriver.common.by import By

或者我建议您使用 find_elements_by_xpath 以更有效的方式定位您的项目 这是示例代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
browser = webdriver.Firefox()
browser.get('https://www.facebook.com')
msg = 'KA_ME_HA_ME_HAAA'
username = browser.find_elements_by_xpath('//*[@id="email"]')
username[0].send_keys(msg)
browser.close()