【问题标题】:Unable to locate element - selenium无法定位元素 - 硒
【发布时间】:2020-10-26 18:49:08
【问题描述】:

我正在尝试制作一个可以自己制作质子电子邮件的程序。一切都很顺利,直到我不得不创建输入用户名和密码的代码。问题是:它输入了密码,但我知道为什么它不对用户名做同样的事情。我试着把我能找到的每一个 id 都放进去,但它仍然没有用。(我也尝试用类或名称做一些事情,但我失败了)。

这是我的代码:

from selenium import webdriver
import time

url = "https://protonmail.com/"
driver = webdriver.Chrome(r'C:\Users\Puhar\Desktop\chromedriver')
driver.get(url)
driver.find_element_by_xpath('//*[@href="signup"]').click()
time.sleep(2)
driver.find_element_by_class_name("panel-heading").click()
time.sleep(2)
driver.find_element_by_id("freePlan").click()
time.sleep(6)
driver.find_element_by_id("domain").send_keys("juzername")
time.sleep(1.5)
driver.find_element_by_id("passwordc").send_keys("usernameForUser")
time.sleep(3.5)
driver.find_element_by_id("password").send_keys('usernameForUser')
time.sleep(1.5)

这是错误:

Traceback(最近一次调用最后一次):

文件“C:\Users\Puhar\Desktop\mejlhekler\mejlhekler1.py”,第 20 行,在

driver.find_element_by_id("domain").send_keys("juzername")

文件“C:\Users\Puhar\AppData\Roaming\Python\Python39\site- packages\selenium\webdriver\remote\webdriver.py",第 360 行,在 find_element_by_id 中

return self.find_element(by=By.ID, value=id_)

进程以退出代码 1 结束

【问题讨论】:

  • 您正在使用睡眠,您应该使用显式等待。这可能是没有找到元素的原因,它还没有加载到 DOM 中。

标签: python selenium


【解决方案1】:

我认为您使用了错误的 id 标签。您选择的是@protonmail.com 下拉菜单,而不是输入标签。

driver.find_element_by_id("username").send_keys("juzername")

【讨论】:

    【解决方案2】:

    通过日志driver.find_element_by_id("domain").send_keys("juzername"),我们可以大致知道错误发生在哪里。

    请看下面的源页面截图,我们可以得到正确的代码。

    driver.find_element_by_id("username").send_keys("juzername")
    

    顺便说一句,//*[@href="signup"],"panel-heading" 不是找到你需要的元素的好主意,因为他们每个人都会找到很多元素。我认为学习更多 xpath 或 cssSelector 会对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2020-07-23
      • 2019-09-30
      • 2021-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 2019-12-01
      相关资源
      最近更新 更多