首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么不能在Nightmare.evaluate()中使用我的类?

Nightmare.evaluate()是一个用于在Nightmare实例中执行JavaScript代码的方法。它允许你在浏览器环境中运行自定义的脚本,但是有一些限制。

Nightmare.evaluate()中不能使用自定义的类,因为该方法的执行环境是在浏览器中,而不是在Node.js环境中。在浏览器环境中,只能使用浏览器原生的JavaScript对象和方法,无法直接使用自定义的类。

如果你想在Nightmare.evaluate()中使用自定义的类,可以考虑以下解决方案:

  1. 将自定义类的实例转换为普通的JavaScript对象:在Nightmare.evaluate()中,将自定义类的实例转换为普通的JavaScript对象,只传递需要的属性和方法。这样可以避免直接使用自定义类,但仍然可以在浏览器环境中使用相关的属性和方法。
  2. 将自定义类的逻辑转移到Nightmare实例外部:如果你的自定义类包含了一些与Nightmare实例无关的逻辑,可以考虑将这部分逻辑移出Nightmare.evaluate(),在Nightmare实例外部执行。然后,将结果传递给Nightmare.evaluate()进行进一步处理。

总之,Nightmare.evaluate()中不能直接使用自定义类,因为它的执行环境是在浏览器中。你可以通过转换为普通JavaScript对象或将逻辑移出Nightmare.evaluate()来解决这个问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么建议使用框架默认 DefaultMeterObservationHandler

为什么建议使用框架默认 DefaultMeterObservationHandler 背景知识 最近,我们升级了 SpringBoot 3.x,并且,升级后,我们全面改造了原来 Sleuth 以及...全面使用 Observation 遇到了内存溢出以及 CPU 飙高(非不断 GC 导致) 但是,我们在全面使用 Observation 时候,发现了一个问题,就是内存溢出以及 CPU 飙高(非不断 GC...为何会出现内存溢出 我们通过增加如下启动参数启动并且在退出时候 dump JFR: -XX:StartFlightRecording=disk=true,dumponexit=true 或者使用下面的参数在内存溢出时候...} log.info("cost {} ms", System.currentTimeMillis() - start); } } } 在电脑上...我们将全局 ObservationHandler 改为什么都不做,对比下: package com.github.hashjang.wwsmbjysymrdo; import io.micrometer.common.KeyValue

3200

为什么建议你使用Python3.7.3?

作者: Lateautumn4lin 来源:云爬虫技术研究笔记 ---- 之前使用Python环境一直是Python3.7.3,一直使用很正常,没有什么毛病,直到最近做一个图片下载器时候发现了问题...这个问题在Python中比较常见,说明是本地SSL验证出现了问题,一般在Requests使用我们一般会这么进行处理: >>> import requests >>> session = requests.Session...https去验证SSL证书,不过这里问题是使用是Aiohttp库,并没有Verify这个参数,所以我们并不能使用这个去忽略这个问题。...可惜环境之前是3.7.3 我们知道了问题解决办法,我们再去看看为什么会有这个问题?...最后小建议 最后建议大家能够使用3.7.4时候尽量不使用3.7.3版本,虽然3.8也可以避免这个问题,但是3.8还是刚推出,BUG问题还是很多,所以目前这个阶段大家还是尽量使用3.7.4。

2.1K30

为什么使用不了了?

【分析】:这个错误比较明显,图中将“TestClass2”写在了 “TestClass1”使用是不允许出现嵌套,否则就是我们常说”,必须杜绝这样编程失误。...解决方案 只要将“TestClass2” 从“TestClass1” 移出来即可。 错误情况2 在同一项目中使用“TestClass2”这个时出现错误。...【分析】:“TestClass1”只有一个方法,没有其他,所以不存在“情况。...解决方案 将名改为 “TestClass1”即可。 错误情况4 在调用“TestClass”这个时出现错误。 【分析】:无法调用时,可能是由于没有在项目中将库引用进来。...在解决方案下找到要添加引用库,点击确定,将库引用进来。  最后在代码引用库,问题解决。

68030

为什么推荐你使用RabbitMQ消息转换功能

改版: 发送消息与订阅消息取消使用amqp提供消息序列化与反序列化功能,使用String类型,发送消息时手动转化为json字符串再发送,消费消息时手动json反序列化。...1、不做兼容上线,但需要: 确保不会有新消息进入队列; 确保队列消息已经消费完。...2、粗暴方式,直接清空队列,丢弃历史消息; 3、做兼容,给旧消息创建一个名匹配消息Body类型,添加一个@RabbitHandler方法处理旧消息。...在消息消费阶段,Jackson2JsonMessageConverter也需要先根据消息头TypeId获取JavaType,再执行反序列化操作,当名修改时,或者生产者和消费者各自定义名不同,都将会导致反序列化失败...除非确保消息Body名不会变,且生产者与消费者定义完整名相同,否则不建议使用自动序列化与反序列化功能。

2.2K20

为什么建议你使用Java序列化

作为一名Java开发,为什么建议你在开发避免使用Java序列化?...在实现了 Serializable 接口对象,会生成一个 serialVersionUID 版本号,这个版本号有什么用呢?...它会在反序列化过程来验证序列化对象是否加载了反序列化,如果是具有相同类名不同版本号,在反序列化是无法获取对象。...具体实现序列化是writeObject和readObject,通常这两个方法是默认,我们也可以在实现Serializable接口对其重写,定制属于自己序列化和反序列化机制。...Java 默认序列化虽然实现方便,但却存在安全漏洞、跨语言以及性能差等缺陷,所以我强烈建议你避免使用 Java 序列化。

1.9K20

MyBatis 为什么建议使用 where 1=1?

1 错误改造方式 既然是去掉 where 1=1,那最简单方式就是将它直接从代码删除了,如下代码所示: <!...2 正确改进方式 其实不用,在 MyBatis 早已经想到了这个问题,我们可以将 SQL where 关键字换成 MyBatis 标签,并且给每个标签内都加上 and 拼接符,这样问题就解决了...传任何参数请求 此时我们可以传递任何参数(查询所有数据),如下图所示: 生成 SQL 语句如下: 传递 1 个参数请求 也可以传递 1 个参数,根据 name 进行查询,如下图所示: 生成...,如下图所示: 生成 SQL 如下图所示: 用法解析 我们惊喜发现,在使用了标签之后,无论是任何查询场景,传一个或者传多个参数,或者直接传递任何参数,都可以轻松搞定。...and 关键字删除掉,从而不会导致 SQL 语法错误,这一点官方文档也有说明,如下图所示: 3 总结 在 MyBatis ,建议尽量避免使用无意义 SQL 拼接  where 1=1,我们可以使用标签来替代

56710

MyBatis 为什么建议使用 where 1=1?

错误改造方式 既然是去掉 where 1=1,那最简单方式就是将它直接从代码删除了,如下代码所示: <!...正确改进方式 其实不用,在 MyBatis 早已经想到了这个问题,我们可以将 SQL where 关键字换成 MyBatis 标签,并且给每个 标签内都加上 and 拼接符,这样问题就解决了...传任何参数请求 此时我们可以传递任何参数(查询所有数据),如下图所示: 生成 SQL 语句如下: 传递 1 个参数请求 也可以传递 1 个参数,根据 name 进行查询,如下图所示...加 password 方式进行联合查询,如下图所示: 生成 SQL 如下图所示: 用法解析 我们惊喜发现,在使用了 标签之后,无论是任何查询场景,传一个或者传多个参数,或者直接传递任何参数...and 关键字删除掉,从而不会导致 SQL 语法错误,这一点官方文档也有说明,如下图所示: 总结总结 在 MyBatis ,建议尽量避免使用无意义 SQL 拼接 where 1=1,我们可以使用

72310

为什么自动化流程执行

很多人经常会有这个问题,为什么自动化流程执行。...流程第二步:请检查自动化流程是否有执行请来到后台【流程日志】,如果运行成功流程就会显示【执行成功】并有一个【运行id】。...自动化流程执行失败第三步:确认流程是上线状态,但是流程没有执行,为什么?如果流程确认是上线状态,需要确定你流程是否符合你设定触发条件,如果没有达到对应条件,是不会触发。...常见一些没有触发条件如下:【定时查询应用】:比如腾讯文档、邮箱、mysql等应用目前都是定时查询,而不是实时触发,所以需要稍作等待【触发条件不满足】:在设定了执行条件、查询条件等情况,由于数据设定情况没有满足...,被判断了没有执行【流程执行过程修改】:在有【延迟执行】流程上线后,进行修改,会导致后续流程执行

1.4K30

为什么推荐你使用vue-cli创建脚手架?

最近在知乎看到一个问题,原问题如下: “ 很奇怪,为什么现在能找到自己手动创建vue脚手架文章非常少,而且大家似乎对webpack4热情并不高,对于想基于vue2.0+webpack4搭建一个脚手架来说资料真是少得可怜...难道现在一般做法就是直接从vue-cli开始然后改成自己需要模样吗?难道就没有人从零开始搭建一个渐进增强脚手架?这一点很疑惑,希望大牛给点指导。”...当然,如果你直接使用了vue-cli,你领导要求你将webpack版本从3升级到最新大版本4,你会不会一脸懵逼呢?...举个例子: 在webpack4.0,如何使用extract-text-webpack-plugin配置css单独分离打包,以及如何解决在升级过程碰到一些坑?...所以,平时你们可以在公司里看看你们leader在忙些什么。 这就是为什么推荐你使用vue-cli创建脚手架原因(此文受众是想要进阶中级初级前端人员)。

2.4K140

为什么实际业务建议直接使用POI操作Excel?

、看法,欢迎在文章下方留言或者私信我,您意见对非常宝贵,再次感谢你阅读本文。...一: 使用场景 在日常系统开发,系统支持批量数据操作是一个很常见功能,其中,最常用方式是使用excel表格对数据进行批量添加、删除,如:批量新建订单、批量添加商品等。...:默认情况下Java所有属性都添加读写,在上面加入@ExcelIgnoreUnannotated注解,加入这个注解后只有加了@ExcelProperty才会参与读写。   ...public List getReadData(){ return readData; } }   (四): 书写工具(这个工具可以直接使用,如果有需要...excel文件标题名对应实体 // 获取写入数据第一个元素类型 excelWriter = EasyExcel.write(savePath

1.3K10

什么是线程组,为什么在 Java 推荐使用

Java 线程组是一个 ThreadGroup 对象,它充当了一个父容器,可以将同一线程分成一组,并提供追踪这些线程状态、统计信息及管理这些线程方法。...在线程组,如果发生未捕获异常,可以通过 Thread.UncaughtExceptionHandler 进行处理。 在 Java ,虽然线程组是一种功能强大机制,但实际上并不推荐使用。...在实践,像 Executor 这样 API 已经为线程管理提供了更加强大、可控解决方案,相比之下,线程组已经逐渐退出 Java 中被广泛使用范畴。...3、容易引起歧义 在 Java ,虽然 ThreadGroup 设计旨在通过将一组线程分到同一个容器来轻松管理和控制它们,但如果使用错误,可能会导致线程状态。...因此,在 Java ,线程组已基本过时,推荐使用 Executor 框架等新更实用工具来进行线程管理。

23120

关于拖拽功能在IE11 、Firefox和Safari兼容问题

) 3是firefox在拖动时候会打开一个新窗口 (firbox) 4是ie11不支持onclick属性方法 ; ie11 里元素对象attributes排序和其他浏览器不同, ie11 ...remove()方法work (ie) 对于原因1解决方案 其中IE11 压根就不支持path属性,firefox和Safari还勉强通过hack方式获取到path,获取方式如下: const...path,只有一个办法就是规避使用path,用其他方式代替path,比如通过参数直接传入元素id 通过document.getElementById处理元素。...('click', function () {}) 如果你业务代码里包含 获取对象attributes代码,比如 event.target.attributes[n].xxx 在ie11attributes...解决这个问题 ,是通过遍历attributes 找到符合代替之前写死attributes顺序 针对ie11 remove()work情况,可以用代码 parent.removeChild

3.2K30

Python 为什么建议使用 time.sleep 实现定时功能?

有时候,我们想实现一个非常简单定时功能,例如:让一个程序每天早上 8 点调用某个函数 但我们又不想安装任何第三方库,也不会使用 crontab 或者任务计划功能,就想使用纯 Python 来实现 可能有同学会这样写代码...: import time import datetime def run(): print('是需要被每天调用函数') def schedule(): target_time...print('是需要被每天调用函数') def schedule(): last_run = None while True: now = datetime.datetime.now...这个次数并不多 但无论如何,专业事情应该交由专业工具来做;time.sleep 用来设置周期性时间间隔可以,但它实际上不适合用来做定时任务 因为一个支持定时任务库,例如:Python schedule...总结 如果能用 crontab 或者任务计划,那么这是最优选择;其次,使用 Python 专用定时模块;最次,才是使用 time.sleep 来实现 如果不得不用 time.sleep,那么应该尽量缩短检查间隔

3.6K10

关于 java set,get方法,而为什么推荐直接使用public

不知道有没有人遇到过,有一段时间,都觉得那些 set,get用处何在,直接写一个public直接拿不就行了,多爽,但是随着使用频繁,越来越想去搜索一下这个问题,而不是按照官方推荐,前辈们使用都是建议...这里引入其中一句话: 在任何相互关系,具有关系所涉及各方都遵守边界是十分重要事情,当创建一个库时,就建立了与客户端程序员之间关系,他们同样也是程序员,但是他们是使用库来构建应用...如果所有的成员对任何人都是可用,那么客户端程序员就可以对做任何事情,而不受约束。即使你希望客户端程序员不要直接操作你某些成员,但是如果没有任何访问控制,将无法阻止此事发生。...综上所述,写到这里,诞生了一个想法,其实set ,get ,public,对于它们使用完全取决于我们程序员自己,为了让项目之间逻辑更加清晰,有些标准自上而下,慢慢传了下来,无论你使用那种,但是有一个东西是无法避免...补充说明,set字面意思设置,get获取,我们了解一下java面向对象编程封闭性与安全性,private 修饰set get方法将方法封闭在了一个特定,其他就无法对其变量进行方法,这样就提高了数据安全性

1.4K20

为什么把 Run 出来 Apk 发给老板,却装上!

Run Apk 2.1 textOnly 属性 我们知道,AS Run 起来 Apk,会使用 Debug 签名进行签名,不过安装上,并不是签名问题。...而是因为,Run 出来 APK,会在 AndroidManifest.xml 文件,增加 android:textOnly 属性,正是因为这个属性,阻止了我们使用正常方式安装 APK。...android:testOnly 对应是 ApplicationInfo FLAG_TEST_ONLY,这个 Flag 最早在 Api Level 4 就已经存在,使用它不会有任何低版本兼容问题...这就是为什么你无法安装 Run 出来 Debug.apk。 2.2 为什么要这么设计? 这个问题,对于大多数开发者来说,基本上不是问题。...八年Android开发,从码农到架构师分享技术成长之路,共勉! 最后祝大家生活愉快~

2.6K30

为什么把 Run 出来 Apk 发给老板,却装上!

Run Apk 2.1 testOnly 属性 我们知道,AS Run 起来 Apk,会使用 Debug 签名进行签名,不过安装上,并不是签名问题。...而是因为,Run 出来 APK,会在 AndroidManifest.xml 文件,增加 android:testOnly 属性,正是因为这个属性,阻止了我们使用正常方式安装 APK。...android:testOnly 对应是 ApplicationInfo FLAG_TEST_ONLY,这个 Flag 最早在 Api Level 4 就已经存在,使用它不会有任何低版本兼容问题...只有 AS 3.0+ IDE 上,Run 出来 APK,才会默认带上 testOnly 属性,这将阻止你使用正常方式安装。...这就是为什么你无法安装 Run 出来 Debug.apk。 2.2 为什么要这么设计? 这个问题,对于大多数开发者来说,基本上不是问题。

2.4K00

Java 为什么推荐在 while 循环中使用 sleep()

前言最近逛 CSDN 看到一篇文章,文章大意是说为什么在循环中推荐使用 sleep 操作,原因在于线程挂起和唤醒会有很大性能消耗,并推荐使用 Timer 及 ScheduledExecutorService...:我们都知道 Java 线程实际对应着操作系统一个线程,对线程挂起和唤醒是一个很耗性能操作,因此我们需要避免对线程进行挂起和唤醒;但还一个重要原因是忙等待,如上文所示 FLAG 变量状态可能永远不会被改变...比如微服务体系,客户端上报实例状态,或者服务端检测客户端状态都会使用定时轮询机制。...在 Java AQS 等待获取锁和线程池任务为空等待新任务时,会使用等待和唤醒操作轮询机制 和 等待和唤醒 一般会结合使用,避免线程频繁挂起和唤醒。...对技术热情是不断学习和分享动力。博客是一个关于Java生态系统、后端开发和最新技术趋势地方。

56630

996程序员们,为什么建议你买保险?

为此,邀请了好朋友资深保险规划师杨震,请他从客观中立角度给大家开一次讲座,全面解读保险里陷阱,避免大家日后被坑。讲座开始前,先上一波干货,给大家分析一下日常买保险常见各种不正确姿势。...保险雷区,你了解多少?下面就给大家扫盲保险几个误区: ——小贝保险规划总监:杨震 保险买不对,多花很多冤枉钱 虽然越来越多的人有了保险意识,但大多数人对保险了解,还处于一无所知阶段。...但很多人不知道,国家早已对各大保险公司疾病进行了统一,前25种重疾病种各家保险公司定义都是相同。 所以,我们看重数量应该是,重疾条款附加轻症和项目。...要不然,我们花再多钱也是白搭,更得不到风险防御效果。 买保险4个正确打开方式 买保险各种不正确姿势,每天都在我们身边上演,这么深水,怎么才能避免被坑钱呢?...其实多花很多冤枉钱 有的朋友在代理人说服下很容易就买了一份“返还险”,认为到期了生病还可以返还保费,像是捡了一个大便宜。 但其实,这类保险是两全型保险,在寿险基础上附加一款重疾险。

2.8K20
领券