【问题标题】:AttributeError: type object 'By' has no attribute 'name'AttributeError:类型对象'By'没有属性'name'
【发布时间】:2020-11-23 19:38:30
【问题描述】:

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

这是代码中提到的部分:(在 Windows 7 上运行):

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

【问题讨论】:

  • print(type(By))
  • @JacobIRR 为什么?在哪里?
  • 任何可以告诉我们 By 实际上是什么的地方

标签: python selenium selenium-webdriver webdriver webdriverwait


【解决方案1】:

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

  • 您需要将name 替换为NAME

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

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

【讨论】:

    【解决方案2】:

    如果您遇到此错误,那么会有一些例外情况,例如:

    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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 2017-04-15
      • 1970-01-01
      • 2021-10-22
      • 2021-05-06
      • 1970-01-01
      • 2022-01-19
      相关资源
      最近更新 更多