使用Selenium和Python登录页面

使用Selenium和Python登录页面,python,selenium,selenium-webdriver,selenium-chromedriver,Python,Selenium,Selenium Webdriver,Selenium Chromedriver,我有一个网站,我保证没有人可以用selenium登录 给你: 此页面的代码与您看到的不同,我想使用Selenium对其进行爬网 我编写以下代码: from selenium import webdriver import time url = "https://edu.usc.ac.ir/Forms/AuthenticateUser/main.htm" driver = webdriver.Chrome('chromedriver.exe') driver.get(url) time.sleep

我有一个网站,我保证没有人可以用selenium登录 给你:

此页面的代码与您看到的不同,我想使用Selenium对其进行爬网

我编写以下代码:

from selenium import webdriver
import time
url = "https://edu.usc.ac.ir/Forms/AuthenticateUser/main.htm"
driver = webdriver.Chrome('chromedriver.exe')
driver.get(url)
time.sleep(5)
username = driver.find_element_by_id("F80351")
password = driver.find_element_by_id("F80401")
当我使用此代码时,会出现以下错误:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"id","selector":"F80351"}``

我不明白它为什么找不到此页中存在的元素。

您的问题是您没有对找到的元素执行任何操作

更改:

username = driver.find_element_by_id("F80351")
password = driver.find_element_by_id("F80401")
致:


如果仔细查看该文档,您会发现它由几个相互堆叠的框架组成

<body ...>
    ...
    <div id="FacArea" style="top: 48px; position: absolute; overflow: hidden; width: 672px; height: 572px;">
        <div style="overflow: auto; position: absolute; z-index: 2; width: 672px; height: 572px;">
            <iframe src="nav.htm?fid=0;1&amp;tck=&amp;" id="Faci1" name="Faci1" width="672" height="572" style="z-index: 2;">
                #document
                <html>
                    ...
                </html>
            </iframe>
        </div>
    </div>
    ...
</body>

您好,我是tanx,但我建议您在这里测试它,这是我在编写代码后给出的错误:。selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{“方法”:“id”,“选择器”:“F80351”}。这个网站让人着迷,你从来没有见过这样的东西:)不,我不想让别人帮我做,我一次又一次地尝试解决这个问题,但我做不到,我正在努力学习如何解决。这个问题,Tanxedded。。。我真的很感谢你的帮助,因为我是一个乞丐,我不认为这是一个问题,你以同样的方式开始我,从零开始谢谢,非常非常非常好的回答,它工作得很漂亮,非常感谢
<body ...>
    ...
    <div id="FacArea" style="top: 48px; position: absolute; overflow: hidden; width: 672px; height: 572px;">
        <div style="overflow: auto; position: absolute; z-index: 2; width: 672px; height: 572px;">
            <iframe src="nav.htm?fid=0;1&amp;tck=&amp;" id="Faci1" name="Faci1" width="672" height="572" style="z-index: 2;">
                #document
                <html>
                    ...
                </html>
            </iframe>
        </div>
    </div>
    ...
</body>
driver = webdriver.Chrome('chromedriver.exe')
driver.get(url)

frame_names = ('Faci1', 'Master', 'Form_Body')
for name in frame_names:
    frame = driver.find_element_by_name(name)
    driver.switch_to_frame(frame)

username = driver.find_element_by_id('F80351')
password = driver.find_element_by_id('F80401')