使用Selenium和Python登录页面
我有一个网站,我保证没有人可以用selenium登录 给你: 此页面的代码与您看到的不同,我想使用Selenium对其进行爬网 我编写以下代码:使用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
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&tck=&" 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&tck=&" 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')