如何通过按tkinter窗口(python)上的按钮去硒现场

问题描述 投票:-4回答:1

我在python上制作了Instagram bot,但是不能为它制作make接口而且不知道如何用功能连接按钮(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)

没有错误,但我不知道如何将它与tkinter连接以及如何缩短它。

python python-3.x selenium tkinter
1个回答
0
投票

使用按钮打开和关闭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()
© www.soinside.com 2019 - 2024. All rights reserved.