Sebass 发表于 2021-1-5 09:39:05

Python 脚本不能网页上的按钮

简介:我在写一个自动抢课软件,大学生苦啊!
逻辑顺序是:1. 从我们学校官网 https://www.ucf.edu/ 点击 UCF SIGN IN + 。
                2. 然后再点击 myUCF。
                3. 然后会转到另外一个界面。

我有两种设想: 1. 直接用登录界面网址,打开登录界面。但是貌似我们学校官网挺安全,自动刷新地址。会报错如下面一样:
UCF Federated Identity
Authentication Error 1
An error occurred during authentication. Please try the following steps:
Completely close all web browser sessions.
Open a new web browser session.
Verify and type the URL of the site you wish to access.
Retry signing on using your username and password.
If you continue to receive this message, please try using a different browser, contact the web page’s support staff, or contact the UCF IT Support Center at (407) 823-5117 or itsupport@ucf.edu.
翻译:UCF联合身份
验证错误1
身份验证期间发生错误。请尝试以下步骤:
完全关闭所有Web浏览器会话。
打开一个新的Web浏览器会话。
验证并键入您要访问的站点的URL。
重试使用您的用户名和密码登录。
如果您继续收到此消息,请尝试使用其他浏览器,与网页的支持人员联系,或通过(407)823-5117或itsupport@ucf.edu与UCF IT支持中心联系。

        2.通过点击 UCF SIGN IN + ,然后再点击 myUCF, 然后会转到我的登录页面界面。但是我的代码会报错:Exception has occurred: ElementNotInteractableException
Message: element not interactable
(Session info: chrome=89.0.4356.6)
        我查过说是运行慢,需要加一个wait function, 我也跟着StackOverflow改了,然并卵!!对了我是个半吊子Python使用者,我学的是C和Java,大佬嘴下留情。

我的code: import account

import time

print(account.email)

from selenium import webdriver
from selenium.webdriver.common.keys import Keys


class CheckOutBot:
    def __init__(self):
      self.driver = webdriver.Chrome(executable_path=r'C:\Users\10294\Desktop\Ucf_Web\chromedriver.exe')
      self.driver.get("https://www.ucf.edu/")

    def login(self, email, password):
      #版本1
      #self.driver.get('https://idp-prod.cc.ucf.edu/idp/profile/SAML2/Redirect/SSO?execution=e1s1')
      
      #版本2
      self.driver.find_element_by_id('ucfhb-signon-logo').click()
      self.driver.find_element_by_id('ucfhb-myucf').click()


      time.sleep(10)
      email_input = self.driver.find_element_by_id("username")
      email_input.clear()
      email_input.send_keys(email)
      pass_input = self.driver.find_element_by_id("password")
      pass_input.clear()
      pass_input.send_keys(password)
      sign_on = self.driver.find_element_by_name('_eventId_proceed').click()

    def __del__(self):
      self.driver.close()


if __name__ == "__main__":
    checkout_bot = CheckOutBot()

    checkout_bot.login(account.email, account.password)

    #time.sleep(20)

Sebass 发表于 2021-1-5 09:43:56

对了关于selenium

如果你装了python pip的话直接 cmd:
pip install -U selenium
自动下载66666

或者Pypl:
python setup.py install

suchocolate 发表于 2021-1-5 10:16:45

https://github.com/Python3WebSpider/Python3WebSpider/blob/master/7.1-Selenium%E7%9A%84%E4%BD%BF%E7%94%A8.md

wp231957 发表于 2021-1-5 10:16:58

Sebass 发表于 2021-1-5 09:43
对了关于selenium

如果你装了python pip的话直接 cmd:


我这里可以切到登录界面,再往下 我测试不了
我这里打开该网站实在是有些慢

wp231957 发表于 2021-1-5 10:17:49

import time
from selenium import webdriver as wd



if __name__ == '__main__':
   browser = wd.Chrome()
   browser.get("https://www.ucf.edu/")
   time.sleep(5)
   browser.find_element_by_xpath("//button[@id='ucfhb-signon-logo']").click()
   time.sleep(3)
   browser.find_element_by_xpath("//a[@id='ucfhb-myucf']").click()
   

Sebass 发表于 2021-1-5 10:55:45

wp231957 发表于 2021-1-5 10:17


如图,大哥我这咋不行啊? 我还专门去看了看chromeDrive的版本重新下载了一下chromev87....

一样的代码,我跑不出来是不是环境问题啊,我都重新搞了一遍,哭...
还是不行

Sebass 发表于 2021-1-5 10:58:05

Sebass 发表于 2021-1-5 10:55
如图,大哥我这咋不行啊? 我还专门去看了看chromeDrive的版本重新下载了一下chromev87....

一样的 ...

大哥,我抓到虫了!
MDZZ我每次电脑打开新窗口都是最小化。。。所以根本没有那个选项。
我的妈啊,气够呛

wp231957 发表于 2021-1-5 11:13:36

Sebass 发表于 2021-1-5 10:58
大哥,我抓到虫了!
MDZZ我每次电脑打开新窗口都是最小化。。。所以根本没有那个选项。
我的妈啊,气够 ...

browser.maximize_window()    开局最大化

Sebass 发表于 2021-1-5 11:23:35

wp231957 发表于 2021-1-5 11:13
browser.maximize_window()    开局最大化

我查到了,多谢大哥救我头发{:5_109:}

wp231957 发表于 2021-1-5 11:44:01

Sebass 发表于 2021-1-5 11:23
我查到了,多谢大哥救我头发

我儿子今年大三,嘿嘿

Sebass 发表于 2021-1-5 13:13:18

wp231957 发表于 2021-1-5 11:44
我儿子今年大三,嘿嘿

告辞!

Daniel_Zhang 发表于 2021-1-5 17:15:22

学习一下{:10_256:}

小古比鱼 发表于 2021-1-6 10:32:00

{:10_254:}
页: [1]
查看完整版本: Python 脚本不能网页上的按钮