Python Windows身份验证的用户名和密码无法使用

7
我试图在提示框中输入数据(提供了URL),但以下代码给我一个错误。请帮我解决这个问题?
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Firefox()
url = "http://the-internet.herokuapp.com/basic_auth"
driver.get(url)
time.sleep(5)
alert = driver.switch_to.alert
alert.authenticate('admin','admin')
time.sleep(4)
alert.accept()

我已经尝试了以下内容:
ActionChains(driver).send_keys("admin").send_keys(Keys.TAB).send_keys("admin").perform()

这个也不起作用。

不确定这是否是你的问题,但我看到的第一件事是你忘记在alert = driver.switch_to.alert()中加入“()”。 - Chai
尝试过程中出现了以下错误:alert = driver.switch_to.alert() TypeError: 'Alert' object is not callable - jaibalaji
3个回答

8
当您使用 Selenium 3.4.0geckodriver v0.18.0Mozilla Firefox 53.0Python 3.6.1 时,您可以通过将 usernamepassword 嵌入到 url 中来绕过 Basic Authentication 弹出窗口。
此解决方案打开 URL http://the-internet.herokuapp.com/basic_auth 并使用有效的 usernamepassword 凭据进行身份验证。
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary('C:\\Program Files\\Mozilla Firefox\\firefox.exe')
driver = webdriver.Firefox(firefox_binary=binary, executable_path="C:\\Utility\\BrowserDrivers\\geckodriver.exe")
driver.get("http://admin:admin@the-internet.herokuapp.com/basic_auth")

值得一提的是:使用Chrome v59+时,嵌入式凭据只能部分工作,因为子资源请求将被阻止。 - orde

1
    def test_1_authentication(self):
        self.driver.get("https://the-internet.herokuapp.com/basic_auth")
        shell = win32com.client.Dispatch("WScript.Shell")
        shell.Sendkeys("admin")
        time.sleep(3)
        shell.Sendkeys("{TAB}")
        time.sleep(3)
        shell.Sendkeys("admin")
        time.sleep(3)
        shell.Sendkeys("{ENTER}")
        time.sleep(3)

上述代码也正常工作 :)

以上代码现在是否可用?我发现之前对我有效的同一段代码现在不起作用了。我在这里提出了同样的问题https://stackoverflow.com/questions/49491048/windows-authentication-code-no-longer-working-now - Shoaib Akhtar

0

你也可以使用PyAutoGui

pip3 install pyautogui

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import pyautogui


driver = webdriver.Chrome()
driver.get("htt`enter code here`p://95.141.198.238/noload2/files/074/UTF- 
RSLOAD.NET-.zip")

pyautogui.write('rsload.net') # login
pyautogui.press('tab')        # Tab
pyautogui.write('rsload.net') # pass
pyautogui.press('enter')      # Enter

    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接