Selenium无法找到用户名和密码字段

时间:2018-02-27 16:25:31

标签: python selenium-webdriver

我试图通过传递用户名和密码登录网站。我使用以下代码(Python 3.5):

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
url2 = 'https://services.yesenergy.com/PS/TimeSeriesAnalysis.html#d=a&title=Time Series Analysis'
driver = webdriver.Chrome(r'C:\chromedriver.exe')
driver.get(url2)
username = driver.find_element_by_id("Username")

但我收到错误:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"id","selector":"Username"}
  (Session info: chrome=63.0.3239.132)
  (Driver info: chromedriver=2.35.528161 (5b82f2d2aae0ca24b877009200ced9065a772e73),platform=Windows NT 10.0.15063 x86_64)

编辑:我已经尝试了等待方法以确保页面已正确加载但不起作用

1 个答案:

答案 0 :(得分:2)

您检查网页加载的直觉很棒,但请仔细查看您要选择的html元素:

<input placeholder="Username" type="text" name="j_username">

请注意,它没有id属性,因此您需要使用其他选择方法。

以交互方式解决此类问题的简便方法是了解如何使用Chrome(或其他浏览器)web dev toolsjQuery selectorsCSS selectors。然后,您可以选择适当的硒方法(find_element_by_css_selector)。

例如,打开浏览器的开发工具并将其粘贴到控制台中:

$('input[name="j_username"]')

您将看到选择了正确的元素。现在尝试使用这样的方法:

find_element_by_css_selector('input[name="j_username"]')