【问题标题】:Selenium's Send_Keys not capturing pyqt5's QLabel TextSelenium 的 Send_Keys 未捕获 pyqt5 的 QLabel 文本
【发布时间】:2018-10-08 02:49:37
【问题描述】:

我知道这将是一个简单的修复,但我不知道为什么我不能让 Send_Keys 输入 pyqt5 的 QLabel 文本

这是我目前所拥有的:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QVBoxLayout, QPushButton, QLabel, QLineEdit, QGridLayout, QGroupBox, QDialog
from PyQt5.QtCore import pyqtSlot
from requests import get
from bs4 import BeautifulSoup
from urllib.request import Request, urlopen
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from requests import get
import time

class Window(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        self.setWindowTitle("Project PiBu!!")

        self.game_name = QLabel("Game Name:", self)
        self.game_line_edit = QLineEdit(self)
        self.search_button = QPushButton("Search", self)
        self.search_button.clicked.connect(self.on_click)
        self.game = QLabel(self)
        self.results = QLabel("Results For:", self)
        self.meta_critic_label = QLabel("Metacritic Score:", self)
        self.user_score_label = QLabel("User Score:", self)
        self.meta_critic_score = ""
        self.user_score_score = ""

        self.createGridLayout()
        self.windowLayout = QVBoxLayout()
        self.windowLayout.addWidget(self.horizontalGroupBox)
        self.setLayout(self.windowLayout)

        self.show()

    def createGridLayout(self):
        self.horizontalGroupBox = QGroupBox()
        self.layout = QGridLayout()
        self.layout.setColumnStretch(1, 3)
        self.layout.setColumnStretch(2, 3)
        self.layout.setColumnStretch(3, 3)
        self.layout.setColumnStretch(4, 3)

        self.layout.addWidget(self.game_name, 0, 0)
        self.layout.addWidget(self.game_line_edit, 0, 1)
        self.layout.addWidget(self.search_button, 0, 2)
        self.layout.addWidget(self.results, 1, 0)
        self.layout.addWidget(self.game, 2, 0)
        self.layout.addWidget(self.meta_critic_label, 1, 1)
        self.layout.addWidget(self.user_score_label, 1, 2)

        self.horizontalGroupBox.setLayout(self.layout)


    @pyqtSlot()
    def on_click(self):
        self.game.setText(self.game_line_edit.text())

        # options = Options()
        # options.add_argument("--headless")  # Runs Chrome in headless mode.
        # options.add_argument('--no-sandbox')  # # Bypass OS security model
        # options.add_argument('start-maximized')
        # options.add_argument('disable-infobars')
        # options.add_argument("--disable-extensions")
        # driver = webdriver.Chrome(chrome_options=options, executable_path='/home/littlejiver/Downloads/chromedriver')

        self.driver = webdriver.Chrome()
        self.driver.get("https://www.metacritic.com/game")

        print("Headless Chrome Initialized on Linux OS")

        self.search_element = self.driver.find_element_by_name("search_term")
        self.search_element.clear()
        self.search_element.send_keys(self.game)

        # self.game_line_edit.setText("")

if __name__ == '__main__':

    app = QApplication(sys.argv)
    win = Window()
    sys.exit(app.exec_())

我收到此错误:

TypeError: object of type 'QLabel' has no len()

我不知道如何将输入到“QLabel”中捕获的“QLineEdit”中的文本捕获到可以通过 send_keys“读取”的变量中

希望这是有道理的:)

谢谢!

【问题讨论】:

    标签: python-3.x selenium user-interface pyqt5


    【解决方案1】:

    就像改变一样简单

     self.search_element.send_keys(self.game)
    

    到:

    self.search_element.send_keys(self.game.text())
    

    【讨论】:

    • 有谁知道如何加快这个过程?
    猜你喜欢
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-18
    • 2021-11-19
    • 2013-05-21
    • 2016-10-12
    • 2019-01-22
    相关资源
    最近更新 更多