Html 即使从源代码复制元素,Selenium也未发现元素异常

Html 即使从源代码复制元素,Selenium也未发现元素异常,html,selenium,exception,Html,Selenium,Exception,我正在尝试登录此页面以访问LexisNexis。这是我的密码: from selenium import webdriver browser = webdriver.Firefox(executable_path='/usr/local/bin/geckodriver') type(browser) browser.get('https://sfx.carli.illinois.edu/sfxuiu?url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:

我正在尝试登录此页面以访问LexisNexis。这是我的密码:

from selenium import webdriver
browser = webdriver.Firefox(executable_path='/usr/local/bin/geckodriver')
type(browser)

browser.get('https://sfx.carli.illinois.edu/sfxuiu?url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&ctx_enc=info:ofi/enc:UTF-8&ctx_ver=Z39.88-2004&rfr_id=info:sid/sfxit.com:azlist&sfx.ignore_date_threshold=1&rft.object_id=63750000000001351&svc.fulltext=yes')
linkElem2 = browser.find_element_by_link_text('LEXIS NEXIS DATABASES') 
type(linkElem2)
linkElem2.click()
alert = browser.switch_to.alert
alert.accept()

loginElem = browser.find_element_by_id('j_username')
loginElem.send_keys('username')
passElem = browser.find_element_by_id('j_password')
passElem.send_keys('password')
passElem.submit()
以下是html源代码:

div class="form_row" label for="j_username" Enter your strongNetID:/strong/label input id="j_username" name="j_username" autocomplete="OFF" autocapitalize="off" autocorrect="off" value="" type="text" /div div class=“表格行” =“j_用户名”的标签 输入您的strong网络ID:/strong/标签 输入id=“j\u username=“j\u username”autocomplete=“OFF”autocapitalize=“OFF”autocorrect=“OFF”value=”“type=“text” /div
我不确定我做错了什么:/

单击该链接将打开一个新选项卡,因此在查找用户名和密码字段之前,您需要切换到新选项卡。试试这个(缩进可能会被破坏):

您将需要以下导入

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

1。问题 “LEXIS NEXIS数据库”链接打开新窗口,您必须切换到该窗口才能登录:

2。您在评论中共享的问题是第一次打开时出现错误(新浏览器配置文件)。 您只需打开并单击“使用您的NetID登录”即可成功打开登录页面。这样更好,因为您不需要处理windows,请检查以下代码:

from selenium import webdriver

browser = webdriver.Firefox(executable_path='/usr/local/bin/geckodriver')
browser.implicitly_wait(5)

browser.get('https://compass2g.illinois.edu/webapps/login/')
browser.find_element_by_link_text('Login with your Illinois NetID').click()

browser.implicitly_wait(5)

browser.find_element_by_id('j_username').send_keys('username')
passElem = browser.find_element_by_id('j_password')
passElem.send_keys('password')
passElem.submit()

非常感谢。不过我还是有一些错误。首先它说“驱动程序”这个名字没有定义,所以我用浏览器代替。然后它说列表索引超出范围,所以我把它改为0。然后它说名称“wait”未定义,所以我使用了:from selenium.webdriver.support.ui导入WebDriverWait from selenium.webdriver.support导入预期的_条件作为EC from selenium.common.exceptions导入timeoutexception正确,您将需要导入等待方法,请参阅我的更新答案我使用了导入,但我总是遇到超时异常。我尝试了10,20,30,60,但仍然不起作用:/我不确定这是否意味着它仍然找不到元素。也许元素是隐藏的?但我不知道如何才能让python找到它!!仍然不起作用:/I我甚至运行了书中的精确代码,自动处理那些无聊的东西,一个登录到电子邮件的代码,它给出了相同的错误!找不到元素!!如果iframe标记内的输入很好,请提供url或htmlCheck!这帮了大忙!!!!!我不得不更改passElem行,使其看起来像浏览器。按id行查找元素,但仅此而已。再次感谢你,我花了好几个小时想弄明白
from selenium import webdriver

browser = webdriver.Firefox(executable_path='/usr/local/bin/geckodriver')
browser.implicitly_wait(5)

browser.get('https://sfx.carli.illinois.edu/sfxuiu?url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&ctx_enc=info:ofi/enc:UTF-8&ctx_ver=Z39.88-2004&rfr_id=info:sid/sfxit.com:azlist&sfx.ignore_date_threshold=1&rft.object_id=63750000000001351&svc.fulltext=yes')
browser.find_element_by_link_text('LEXIS NEXIS DATABASES').click()

browser.close()
browser.switch_to.window(browser.window_handles[0])

browser.find_element_by_id('j_username').send_keys('username')
passElem = browser.find_element_by_id('j_password')
passElem.send_keys('password')
passElem.submit()
from selenium import webdriver

browser = webdriver.Firefox(executable_path='/usr/local/bin/geckodriver')
browser.implicitly_wait(5)

browser.get('https://compass2g.illinois.edu/webapps/login/')
browser.find_element_by_link_text('Login with your Illinois NetID').click()

browser.implicitly_wait(5)

browser.find_element_by_id('j_username').send_keys('username')
passElem = browser.find_element_by_id('j_password')
passElem.send_keys('password')
passElem.submit()