Чтобы реализовать это, я использовал Pyautogui, но проблема в том, что на 2/4 веб-сайтов есть кнопка на них нужно нажать Enter, а нажатие Enter нажимает /n на веб-сайте.
Чтобы решить эту проблему, мы создали разные функции для каждого из этих веб-сайтов и добавили функцию распознавания изображений PyAutoGUI по щелчку. Но по какой-то причине это работает на Webengineview1, 2, 4. Не на webengineview 3.
Я индивидуально пробовал на webengineview 3, и это сработало. Я думаю, что это проблема логики/таймера. Я пока не смог с этим справиться. Вот мой код: Если вам интересно, почему у меня есть блок «попробуй и исключай» для WebengineView 3, это потому, что кнопка, которую нужно нажать, меняется после однократного нажатия кнопки.
И если Вы задаетесь вопросом, почему я нажимаю на ak.png, это поле ввода для webengineview № 4, на которое нужно щелкнуть один раз, чтобы инициализировать его. То же самое и с полем ввода/текстовым полем в webengineview №3, где у нас есть typebxcl.png.
P.S. Извините за загадочную логику.
import sys
import time
import pyautogui
from PySide6 import QtWidgets
from PySide6.QtWebEngineWidgets import QWebEngineView
from PySide6.QtWebEngineCore import QWebEngineProfile, QWebEnginePage
from PySide6.QtWidgets import QLineEdit
from PySide6.QtCore import QUrl, QTimer
from MainWindow2 import Ui_MainWindow
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super(MainWindow, self).__init__()
# Set up UI
self.setupUi(self)
self.setWindowTitle("4")
# Create a persistent profile
self.profile = QWebEngineProfile("myProfile", self)
# Find widgets
self.lineEdit = self.findChild(QLineEdit, "lineEdit")
self.webEngineView1 = self.findChild(QWebEngineView, "webEngineView")
self.webEngineView2 = self.findChild(QWebEngineView, "webEngineView_2")
self.webEngineView3 = self.findChild(QWebEngineView, "webEngineView_3")
self.webEngineView4 = self.findChild(QWebEngineView, "webEngineView_4")
# Set the profile for each webEngineView
self.webEngineView1.setPage(QWebEnginePage(self.profile, self.webEngineView1))
self.webEngineView2.setPage(QWebEnginePage(self.profile, self.webEngineView2))
self.webEngineView3.setPage(QWebEnginePage(self.profile, self.webEngineView3))
self.webEngineView4.setPage(QWebEnginePage(self.profile, self.webEngineView4))
self.lineEdit.returnPressed.connect(self.type)
def type(self):
input_value = self.lineEdit.text()
QTimer.singleShot(0, lambda: self.setFocusAndType(self.webEngineView1, input_value))
QTimer.singleShot(2000, lambda: self.setFocusAndType24(self.webEngineView2, input_value))
QTimer.singleShot(3750, lambda: self.setFocusAndType2(self.webEngineView3, input_value))
QTimer.singleShot(6000, lambda: self.setFocusAndType1(self.webEngineView4, input_value))
def setFocusAndType(self, webview, input_value):
webview.setFocus()
pyautogui.write(input_value)
pyautogui.click('cpenter.png')
def setFocusAndType1(self, webview, input_value):
webview.setFocus()
pyautogui.click('ak.png')
pyautogui.write(input_value)
pyautogui.press("enter")
def setFocusAndType24(self, webview, input_value):
webview.setFocus()
pyautogui.write(input_value)
pyautogui.press('enter')
def setFocusAndType2(self, webview, input_value):
#webview.setFocus()
#pyautogui.click('center1.png')
#pyautogui.write(input_value)
#pyautogui.click('cle2.png')
webview.setFocus()
pyautogui.click('typebxcl.png')
pyautogui.write(input_value)
def tryt():
try:
pyautogui.click('clenter1.png')
except pyautogui.ImageNotFoundException:
pyautogui.click('cld2.png')
QTimer.singleShot(50, tryt)
#everything goes above this
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.showMaximized()
app.exec()
Подробнее здесь: https://stackoverflow.com/questions/781 ... de-by-side