Текст записи Tkinter, не переданный send.keys () в Selenium - PullRequest
0 голосов
/ 13 февраля 2020

Я пытался создать программу, которая будет запускаться через al oop, извлекать записи из tkinter GUI и передавать ей команду send.keys (). Однако, когда я использую этот l oop, он передаст имя переменной p1.get () вместо того, чтобы вытягивать любую переменную, равную. Я запустил код, в котором я настроил его как обычный список и извлек из него «test», и он будет работать, но он не будет работать так, как сейчас. Я также читал, что некоторым людям сначала нужно будет отправить пустой текст в send.keys (), но это тоже не сработало. Я довольно новичок как в python, так и в селене, поэтому я мог бы сделать простую ошибку и не заметить ее, но любая помощь будет принята с благодарностью. Спасибо.

import tkinter as tk
import time

from selenium import webdriver
options = webdriver.ChromeOptions()
options.muted = True
browser = webdriver.Chrome('/Users/Matt/Downloads/chromedriver', options=options)

app = tk.Tk()

p1 = tk.StringVar()
p2 = tk.StringVar()

entryPlayer1 = tk.Entry(app, textvariable = p1, width=20)
entryPlayer1.grid(column=1, row=0, padx=10, pady=5, sticky=tk.N)
entryPlayer2 = tk.Entry(app, textvariable = p2, width=20)
entryPlayer2.grid(column=1, row=1, padx=10, pady=5, sticky=tk.S)

def click():
    for i in range(1, 2):
        pID = ("p" + str(i) + ".get()")
        browser.get("https://www.espn.com/")
        time.sleep(1)
        srch_btn = browser.find_element_by_xpath('//*[@id="global-search-trigger"]')
        srch_btn.click()
        srch_bar = browser.find_element_by_xpath('//*[@id="global-search"]/input[1]')
        srch_bar.send_keys(pID)

SubmitButton = tk.Button(app, text = 'Submit', command = click)
SubmitButton.grid(column=3, row=5, pady=10, padx = 10)

app.mainloop()

1 Ответ

1 голос
/ 13 февраля 2020

Первый for i in range(1, 2) будет l oop только один раз с i = 1, поскольку range(a, b) включает только от a до b-1.

Во-вторых, оно должно быть pID = eval("p" + str(i) + ".get()"). Но использование eval() не рекомендуется. Попробуйте использовать список для хранения переменных, например:

# if `my_vars` holds the variables
for i in range(2):
    pID = my_vars[i].get()
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...