我制作了一个简单的程序,当单击Open OpenSea Tab按钮时,在默认浏览器中打开一个新选项卡,如下所示:
import tkinter as tk
import webbrowser
root = tk.Tk() #create a GUI element
root.geometry('500x400') #resolution
root.title("Bulkdozer") #Name of this program
root.attributes('-topmost', True) #keep the program's window top-most
def open_chrome_profile():
webbrowser.open_new_tab('https://opensea.io/asset/create') #open a new tab using user's default browser
#####BUTTON ZONE#######
open_browser = tk.Button(root, width=20, text="Open OpenSea Tab", command=open_chrome_profile) #executes the function when clicked
open_browser.grid(row=22, column=1) #give some specifications
#####BUTTON ZONE END#######
root.mainloop()GUI预览:

单击“打开选项卡”按钮后的OpenSea结果:

到目前为止,我需要让上面的程序与OpenSea选项卡交互,特别是评估OpenSea页面是否要求用户连接钱包,因此我知道我可以使用Selenium包来实现这个目的,而尝试让这个程序在默认浏览器中打开一个窗口,使用以下代码:
import tkinter as tk
#from tkinter import filedialog
#import webbrowser
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--user-data-dir="+r"C:\Users\ResetStoreX\AppData\Local\BraveSoftware\Brave-Browser\User Data\Default") # change to profile path
chrome_options.add_argument('--profile-directory='+'Default')
driver = webdriver.Chrome(executable_path="C:\Program Files (x86)\BraveSoftware\Brave-Browser\Application\brave.exe", chrome_options=chrome_options) # change the executable_path too
root = tk.Tk() #create a GUI element
root.geometry('500x400') #resolution
root.title("Bulkdozer") #Name of this program
root.attributes('-topmost', True) #keep the program's window top-most
def open_chrome_profile():
driver.ExecuteScript("window.open('your URL', '_blank');") #open a new tab using user's default browser
#####BUTTON ZONE#######
open_browser = tk.Button(root, width=20, text="Open OpenSea Tab", command=open_chrome_profile) #executes the function when clicked
open_browser.grid(row=22, column=1) #give some visual specifications for the button
#####BUTTON ZONE END#######
root.mainloop()但它造成了以下错误:
C:\Users\ResetStoreX\Pictures\Cryptobote\Cryptobote
NFT\Crypto\散装masive\散-dozer.py:19: DeprecationWarning: executable_path已被弃用,请传入对象
driver = C:\Users\ResetStoreX\Pictures\Cryptobote\Cryptobote = webdriver.Chrome(executable_path="C:\Program executable_path= chrome_options=chrome_options) #也更改executable_path,NFT\Crypto\散装文件\散装\dozer.py:19: DeprecationWarning: chrome_options而不是chrome_options driver = webdriver.Chrome(executable_path="C:\Program (x86)\BraveSoftware\Brave-Browser\Application\brave.exe",)chrome_options=chrome_options) #更改executable_path太回溯(最近一次调用):
文件"C:\Users\ResetStoreX\miniconda3\envs\spyder-env\lib\site-packages\selenium\webdriver\common\service.py",第71行,在start self.process = subprocess.Popen(cmd,env=self.env,
文件"C:\Users\ResetStoreX\miniconda3\envs\spyder-env\lib\site-packages\spyder_kernels\customize\spydercustomize.py",第108行,在init超级(SubprocessPopen,self).init(*args,**kwargs)中
文件"C:\Users\ResetStoreX\miniconda3\envs\spyder-env\lib\subprocess.py",第951行,在init self._execute_child(args,可执行文件,preexec_fn,close_fds )中
文件"C:\Users\ResetStoreX\miniconda3\envs\spyder-env\lib\subprocess.py",第1420行,以_execute_child hp、ht、pid、tid =_winapi.CreateProcess(可执行、args、
FileNotFoundError: WinError 2 El sistema no puede el archivo,特别是WinError
在处理上述异常的过程中,发生了另一个异常:
回溯(最近一次调用):
"C:\Users\ResetStoreX\Pictures\Cryptobote\Cryptobote = webdriver.Chrome(executable_path="C:\Program (x86)\BraveSoftware\Brave-Browser\Application\brave.exe",chrome_options=chrome_options) ##也更改executable_path
文件"C:\Users\ResetStoreX\miniconda3\envs\spyder-env\lib\site-packages\selenium\webdriver\chrome\webdriver.py",第70行,在init超级(WebDriver,self).init(DesiredCapabilities.CHROME'browserName',"goog“)中
文件"C:\Users\ResetStoreX\miniconda3\envs\spyder-env\lib\site-packages\selenium\webdriver\chromium\webdriver.py",第90行,在init self.service.start()中
文件"C:\Users\ResetStoreX\miniconda3\envs\spyder-env\lib\site-packages\selenium\webdriver\common\service.py",第81行,在开始提高WebDriverException(
WebDriverException:“Applicatiorave.exe”可执行文件需要在路径中。请参阅https://chromedriver.chromium.org/home
我知道我最终破坏了我的程序,所以我想知道到底出了什么问题?
或者,如果有一种使用初始代码与OpenSea选项卡交互的更简单的方法,我会全神贯注.
发布于 2022-01-14 00:43:30
很抱歉发布了另一个答案,但这才是你真正应该做的。
您正在调用ExecuteScript,但您应该调用execute_script。
我在其中任何一个文件上都找不到任何文档,但似乎应该使用execute_script。
这样,您的代码将类似于:
import tkinter as tk
#from tkinter import filedialog
#import webbrowser
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--user-data-dir="+r"C:\Users\ResetStoreX\AppData\Local\BraveSoftware\Brave-Browser\User Data\Default") # change to profile path
chrome_options.add_argument('--profile-directory='+'Default')
driver = webdriver.Chrome(executable_path="C:\Program Files (x86)\BraveSoftware\Brave-Browser\Application\brave.exe", chrome_options=chrome_options) # change the executable_path too
root = tk.Tk() #create a GUI element
root.geometry('500x400') #resolution
root.title("Bulkdozer") #Name of this program
root.attributes('-topmost', True) #keep the program's window top-most
def open_chrome_profile():
driver.ExecuteScript("window.open('your URL', '_blank');") #open a new tab using user's default browser
#####BUTTON ZONE#######
open_browser = tk.Button(root, width=20, text="Open OpenSea Tab", command=open_chrome_profile) #executes the function when clicked
open_browser.grid(row=22, column=1) #give some visual specifications for the button
#####BUTTON ZONE END#######
root.mainloop()https://stackoverflow.com/questions/70703249
复制相似问题