G7 of C MajoR 2021-09-08 16:06 采纳率: 0%
浏览 60

python+selenium做自动化点击事件触发就阻塞进程

使用点击事件就直接阻塞,不运行也不报错,但是点击事件确实是触发了的,有没有知道这是为啥?
完整代码如下:

import subprocess
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.action_chains import ActionChains
import os
import xlrd

print("""

  _   _ ______ _______            _        ______                        
 | \ | |  ____|__   __|/\        | |      |  ____|                       
 |  \| | |__     | |  /  \  _   _| |_ ___ | |__ _ __ __ _ _ __ ___   ___ 
 | . ` |  __|    | | / /\ \| | | | __/ _ \|  __| '__/ _` | '_ ` _ \ / _ \
 | |\  | |       | |/ ____ \ |_| | || (_) | |  | | | (_| | | | | | |  __/
 |_| \_|_|       |_/_/    \_\__,_|\__\___/|_|  |_|  \__,_|_| |_| |_|\___|



""")


#表格文档操作,配置读取
workfile = xlrd.open_workbook('./操作配置文件.xls')
sheet = workfile.sheet_by_name('work')
nrows = sheet.nrows

#定义exe路径
MetacurrentPath = os.path.abspath('metamask.exe')
class NFTAutoFrame():
    def __init__(self,dr):
        self.dr = dr
    # 简易型运行接口
    def WorkInsert(self):
        #循环判断操作方式
        for i in range(1, nrows):
            if int(sheet.cell_value(i, 0)) == 1:
                print('开始模拟点击')
                element = sheet.cell_value(i,1)
                print(element)
                self.dr.find_element_by_xpath(element).click()
                print(self.dr.title)
            elif int(sheet.cell_value(i, 0)) == 2:
                print('开始模拟输入')
                try:
                    self.dr.find_element_by_xpath(sheet.cell_value(i, 1)).send_keys(sheet.cell_value(i, 2))
                except:
                    print('输入文本信息出错,请检查元素是否存在')
            elif int(sheet.cell_value(i, 0)) == 3:
                print('开始模拟手动操作小狐狸')
                try:
                    os.system(MetacurrentPath)
                except:
                    print('模拟小狐狸操作失败')
            elif int(sheet.cell_value(i, 0)) == 4:
                print('进行刷新')
                try:
                    self.dr.refresh()
                except:

                    self.dr.get(self.dr.current_url)
            elif int(sheet.cell_value(i, 0)) == 5:
                print('进行强制停止',sheet.cell_value(i, 2),'秒')
                time.sleep(int(sheet.cell_value(i, 2)))
            else:
                print('请输入正确的进行方式')

    def CloseDriver(self):
        input('运行完毕,请按任意键推出程序')
        try:
            self.dr.close()
            self.dr.quit()
            print('程序已经关闭')
        except:
            print('程序已经关闭')

if __name__ == '__main__':
    AutoCount = input('请输入希望循环的次数:')
    input('请在打开浏览器后,最大化浏览器,配置好您的小狐狸,并打开需要测试的地址,按任意键继续')
    chrome_options = Options()
    chrome_options.add_argument(r'--user-data-dir=D:\seleniumAutoConfig')
    dr = webdriver.Chrome(options=chrome_options)
    input('请配置好您的浏览器小狐狸以及网址,配置好请按任意键继续')
    print('系统将在5秒后运行自动化程序,请保持调试浏览器在最前面,程序运行时请不要操作鼠标键盘,可能导致程序运行出错')
    number = 5
    for i in range(5):
        secon = number - i
        print('\r程序运行倒计时……', secon, end='')
        time.sleep(1)
    for i in range(int(AutoCount)):
        NFTAutoFrame(dr=dr).WorkInsert()
    NFTAutoFrame(dr=dr).CloseDriver()
  • 写回答

1条回答 默认 最新

  • CSDN专家-黄老师 2021-09-08 18:05
    关注

    NFTAutoFrame(dr=dr).WorkInsert()这个每次循环就会实例化一次,循环五次应该就实例化5次了,同时你将点击操作做个debug或者点击前后加个print,确定是那个点击出问题了

    评论

报告相同问题?

问题事件

  • 创建了问题 9月8日

悬赏问题

  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)