Python 密码在selenium发送时消失

Python 密码在selenium发送时消失,python,selenium,selenium-webdriver,selenium-chromedriver,Python,Selenium,Selenium Webdriver,Selenium Chromedriver,好的,首先,这里的一切都正常。我现在的问题是当密码发送密钥时,它会立即消失。这是因为密码输入本身会在您再次单击输入时擦除密码。我的问题是,有没有办法让密码在不消失的情况下被注入 from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.support import expected_cond

好的,首先,这里的一切都正常。我现在的问题是当
密码
发送密钥时,它会立即消失。这是因为密码输入本身会在您再次单击输入时擦除密码。我的问题是,有没有办法让密码在不消失的情况下被注入

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from random import randint
import pickle
import datetime
import os
import time

url = 'https://sef.clareityiam.net/idp/login'

current_time = datetime.datetime.now()
current_time.strftime("%m/%d/%Y")

chromedriver = "chromedriver.exe"

driver = webdriver.Chrome(chromedriver)
driver.get(url)
pickle.dump(driver.get_cookies() , open("cookies.pkl","wb"))

user = driver.find_element_by_id("clareity")
user.send_keys("user")

password = driver.find_element_by_id("security")
password.send_keys("Password")


button = driver.find_element_by_id("loginbtn")
button.click()

或者,要发送输入标记中的键,可以使用javascript的
execute\u script
方法。比如说

driver.execute_script('document.getElementById("security").setAttribute("value", "12345")')
然后,您可以通过单击按钮提交此表单,或通过javascript提交,如下所示

driver.execute_script('document.querySelector("form").submit()')

我找到了一些解决办法。Idk为什么我在写这个脚本的时候没有想到这一点,但是


如果您发送两次密码
send_keys
,密码将保持不变。不明白为什么,但它可以工作。

在输入数据之前单击此字段。这对我有用。另外,至少要使用隐式等待。 代码中的另一个问题可能是密码的id不唯一。有两个这样的定位器

import pickle
import time
from selenium import webdriver


url = 'https://sef.clareityiam.net/idp/login'
driver = webdriver.Chrome(executable_path='/snap/bin/chromium.chromedriver')
driver.get(url)
driver.implicitly_wait(10)
pickle.dump(driver.get_cookies(), open("cookies.pkl","wb"))
user = driver.find_element_by_id("clareity")
user.send_keys("user")
password = driver.find_element_by_xpath('//div[@data-ph="PASSWORD"]')
password.click()
password.send_keys("Password")
time.sleep(6)  # Added temporary so you could see that password stays
button = driver.find_element_by_id("loginbtn")
button.click()

您发布的代码中没有在发送键后单击输入字段的内容。单击“提交”按钮时是否清除?也许作为一种解决方法,您可以尝试发送enter键来代替…@pcalkins,它甚至在单击登录btn之前就会清除。真奇怪。我现在正在查看它,并已将登录btn注释掉。因为某些原因,文本正在清除。你真的尝试过这个吗?未向密码文本框发送任何内容。我无法访问此网站。您可以检查输入是否有值。您需要打开控制台并输入以下代码
document.getElementById(“security”).value
。如果它有它工作的价值,如果它没有,你应该寻找另一种方式删除我的答复,没有看到你的第一。相同的解决方法/解决方案:)没问题,我有时会对你的答案投赞成票。