如何解决读取数据类型为str的变量以将其发送到Selenium python中的.sendkeys
我正在尝试从用户那里获取输入,对其进行加密并将其保存到txt文件/二进制文件中,然后将其读回并对其进行解密,并使用它填充.sendkeys(variable),但它似乎不起作用,我也尝试过在网上和其他帖子中搜索它,但对我没有用 我从用户输入的字符串是str 然后我写一个txt文件(在下面的示例中为二进制文件) 然后再读回去解密它,这里的数据类型是我假设是str
from selenium import webdriver
from msedge.selenium_tools import Edge
from cryptography.fernet import Fernet
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import webdriverwait
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support import expected_conditions as EC
def write_key():
key = Fernet.generate_key()
with open("key.key","wb") as key_file:
key_file.write(key)
def load_key():
return open("key.key","rb").read()
def encrypt_write(data,file):
data = bytes(data,'utf-8')
key = load_key()
f = Fernet(key)
encrypteddata = f.encrypt(data)
f = open(file,"wb")
f.write(encrypteddata)
print(encrypteddata)
f.close()
def read_decrypt(file):
f = open(file,"rb")
data = f.readline()
f.close()
key = load_key()
f = Fernet(key)
decrypted_encrypted = f.decrypt(data)
decrypted_encrypted = str(decrypted_encrypted)[2:-1]
return decrypted_encrypted
email = input("email:")
write_key()
encrypt_write(email,'efile.bin')
remail = read_decrypt('efile.bin')
print(type(remail))
print(remail)
driver = Edge(executable_path='msedgedriver.exe')
driver.get('https://www.facebook.com/')
try:
email = webdriverwait(driver,3).until(EC.presence_of_element_located((By.NAME,'email')))
print ("Page is ready!")
email.send_keys(remail)
print('Login sucessful')
except TimeoutException:
print ("Error logining in")
time.sleep(3)
driver.quit()
在这里write_key()和load_key专用于使用cryptography加密数据.fernet crypto_write功能将数据加密并将其写入二进制文件,而read_decrypt功能读取二进制文件将其解密并返回字符串。 email是输入的电子邮件变量 remail是从二进制文件读取的电子邮件 “我还使用打印语句来获得更好的理解,并且我正在使用边缘浏览器”
我的输出是
email:user@xyz
b'gAAAAABfW8uWCwiCUyUMJAcYqmICv5cBAD9SmMGx6rSQMunwE12W9MKidKq8z2QsZx4yNIYM0jFW-kx3BcNe8KSRrHl_TU2_Yw=='
<class 'str'>
user@xyz
Page is ready!
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-46-79206622bda1> in <module>
47 email = webdriverwait(driver,'email')))
48 print ("Page is ready!")
---> 49 email.send_keys(email)
50 print('Login sucessful')
51 except TimeoutException:
~\anaconda3\lib\site-packages\selenium\webdriver\remote\webelement.py in send_keys(self,*value)
476
477 self._execute(Command.SEND_KEYS_TO_ELEMENT,--> 478 {'text': "".join(keys_to_typing(value)),479 'value': keys_to_typing(value)})
480
~\anaconda3\lib\site-packages\selenium\webdriver\common\utils.py in keys_to_typing(value)
148 typing.append(val[i])
149 else:
--> 150 for i in range(len(val)):
151 typing.append(val[i])
152 return typing
我也尝试过email.send_keys(str(remail))
这将填写输入框电子邮件为<selenium.webdriver.remote.webelement.WebElement (session="144eff9ac68a56f6b5a78b4b6ccde663",element="b2ed690c-0410-4838-a4ea-67edd3dfaf18")>
我也尝试过remail = str(remail)
什么都没做
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。