首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在默认浏览器中使用Python上的selenium打开新选项卡的正确方法是什么?

在默认浏览器中使用Python上的selenium打开新选项卡的正确方法是什么?
EN

Stack Overflow用户
提问于 2022-01-13 21:21:47
回答 1查看 461关注 0票数 0

我制作了一个简单的程序,当单击Open OpenSea Tab按钮时,在默认浏览器中打开一个新选项卡,如下所示:

代码语言:javascript
复制
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包来实现这个目的,而尝试让这个程序在默认浏览器中打开一个窗口,使用以下代码:

代码语言:javascript
复制
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选项卡交互的更简单的方法,我会全神贯注.

EN

回答 1

Stack Overflow用户

发布于 2022-01-14 00:43:30

很抱歉发布了另一个答案,但这才是你真正应该做的。

您正在调用ExecuteScript,但您应该调用execute_script

我在其中任何一个文件上都找不到任何文档,但似乎应该使用execute_script

这样,您的代码将类似于:

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70703249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档