如何通过按下tkinter窗口(python)上的按钮使用selenium进入站点

如何通过按下tkinter窗口(python)上的按钮使用selenium进入站点,python,python-3.x,selenium,tkinter,Python,Python 3.x,Selenium,Tkinter,我在python上制作了Instagram机器人,但无法为其制作界面,也不知道如何将按钮与函数连接起来(tkinter) 我试图在谷歌上查找一些信息,但什么都不懂 import sys import random import time from selenium import webdriver from selenium.webdriver.common.keys import Keys liked = 0 login = input('Your login :') passwd

我在python上制作了Instagram机器人,但无法为其制作界面,也不知道如何将按钮与函数连接起来(tkinter)

我试图在谷歌上查找一些信息,但什么都不懂



import sys
import random
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
liked = 0

login = input('Your login   :') 
passwd= input('Your password:') 
driver = webdriver.Chrome(executable_path=r'D:\path\chromedriver.exe')
hashtag_list = ['travelblog', 'travelblogger', 'traveler']
tag = -1
followed = 0
print(len(hashtag_list))
div = ['div[1]','div[2]','div[3]']
#вход
driver.get('https://www.instagram.com/accounts/login/?source=auth_switcher') 
login_form = driver.find_element_by_name('username')
login_form.send_keys(login)
login_from = driver.find_element_by_name('password')
login_from.send_keys(passwd)
login_form.send_keys(Keys.ENTER)
#Отключить уведомления
time.sleep(3)
notifications = driver.find_element_by_xpath("//button[@class='aOOlW   HoLwm ']")
notifications.click()
#Лайкать первые 3 поста по тегу

#переход по хештегу
while liked<= 900: 
    for i in range(len(hashtag_list)):

        tag +=1

        driver.get('https://www.instagram.com/explore/tags/'+ hashtag_list[tag]+'/')
        time.sleep(2)
        likes = 0
    #Зайти на пост поставить лайк выйти...
        for i in range(1,3):
            wait = random.randint(5,15)
            wait1 = random.randint(1,5)
            #открыть пост
            npost = driver.find_element_by_xpath('//*[@id="react-root"]/section/main/article/div[2]/div/div[1]/'+div[likes]+'/a/div[1]/div[2]')
            npost.click()
            time.sleep(wait)
            wait = random.randint(5,15)
            wait1 = random.randint(1,5)
            #лайк
            like = driver.find_element_by_xpath('/html/body/div[3]/div[2]/div/article/div[2]/section[1]/span[1]/button/span')
            like.click()
            liked+=1
            time.sleep(wait)
            wait = random.randint(5,15)
            wait1 = random.randint(1,5)
            print(liked)
            #подписаться
            follow = driver.find_element_by_xpath('/html/body/div[3]/div[2]/div/article/header/div[2]/div[1]/div[2]/button') 
            follow.click()
            time.sleep(wait)
            wait = random.randint(5,15)
            wait1 = random.randint(1,5)
            #unfollow
            unfollow1 = driver.find_element_by_xpath('/html/body/div[3]/div[2]/div/article/header/div[2]/div[1]/div[2]/button')
            unfollow1.click()
            time.sleep(wait1)
            unfollow2 = driver.find_element_by_xpath('/html/body/div[4]/div/div/div[3]/button[1]')
            unfollow2.click()
            time.sleep(wait1)
            wait = random.randint(5,15)
            wait1 = random.randint(1,5)
            #закрыть пост
            close = driver.find_element_by_xpath('/html/body/div[3]/button[1]')
            close.click()
            time.sleep(wait1)
            wait = random.randint(5,15)
            wait1 = random.randint(1,5)
            likes+=1

    print(liked)

导入系统
随机输入
导入时间
从selenium导入webdriver
从selenium.webdriver.common.keys导入密钥
喜欢=0
login=input('您的登录:')
passwd=input('您的密码:')
driver=webdriver.Chrome(可执行文件\u path=r'D:\path\chromedriver.exe')
hashtag_list=['travelblog'、'travelblogger'、'traveler']
标记=-1
跟踪=0
打印(len(标签列表))
div=['div[1]'、'div[2]'、'div[3]']
#вход
司机,上车https://www.instagram.com/accounts/login/?source=auth_switcher') 
login\u form=驱动程序。按\u名称(“用户名”)查找\u元素
登录表单。发送密钥(登录)
login\u from=驱动程序。按\u名称(“密码”)查找\u元素
登录\来自。发送\密钥(passwd)
登录表单。发送密钥(密钥。输入)
#Отключить уведомления
时间。睡眠(3)
通知=驱动程序。通过xpath(//按钮[@class='aOOlW HoLwm'])查找元素
通知。单击()
#Лайкать первые 3 поста по тегу
#переход по хештегу

而喜欢按钮打开和关闭Selenium窗口的最小示例

因为Selenium需要一些时间来打开浏览器的窗口,所以tkinter的窗口暂时冻结

import tkinter as tk
import selenium.webdriver

# --- functions ---

def on_open():
    global driver

    if not driver:
        driver = selenium.webdriver.Firefox()
        url = e.get()
        driver.get(url)

def on_close():
    global driver

    if driver:
        driver.close()
        driver = None

# --- main ---

driver = None

root  = tk.Tk()

e = tk.Entry(root)
e.pack()
e.insert('end', 'https://stackoverflow.com')

b = tk.Button(root, text='Selenium Open', command=on_open)
b.pack()

b = tk.Button(root, text='Selenium Close', command=on_close)
b.pack()

root.mainloop()

你研究过如何使用硒吗?看起来您并没有在代码的任何地方打开浏览器。打开浏览器是任何selenium教程教给你的第一件事。首先创建一个脚本,它可以在没有tkinter的情况下完成。接下来,将其放入函数并将函数分配给按钮。但是Selenium可能需要很长时间才能获取数据,所以它可能会冻结tkinter窗口-您可能需要使用线程来运行Selenium。您指的是什么函数?我在你的代码中没有看到任何函数。或者你的意思是Selenium的功能,比如查找元素?首先将你的代码拆分成函数,并创建脚本,在不使用tkinter的情况下使用这些函数!谢谢你@furas。