簡體   English   中英

使用Selenium和Python登錄頁面

[英]Login to page with Selenium and Python

我有一個網站,我保證沒有人可以使用硒登錄到這里: https : //edu.usc.ac.ir/Forms/AuthenticateUser/main.htm

該頁面的代碼與您看到的代碼不同,我希望使用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"}``

我不知道為什么找不到該頁面中存在的元素。

如果仔細看一下文檔,您會發現它由相互堆疊的幾個框架組成。

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

您的用戶名和密碼輸入位於3幀深的文檔中,這就是為什么找不到它們的原因。 您需要迭代找到那些框架並切換到它們。

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

您的問題是您沒有對找到的元素做任何事情。

更改:

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

至:

driver.find_element_by_id("F80351").send_keys('your username')
driver.find_element_by_id("F80401").send_keys('your password')
driver.find_element_by_id("btnLog").click()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM