学习中的左强 2022-11-15 12:09 采纳率: 100%
浏览 25
已结题

document.querySelector单击后提交数据失败

跨框架用document.querySelector操控网页元素完成自动化处理客户信息,而客户信息在框架内处理,其中一项是选择下拉菜单性别,我用单击方法完成,代码如下:
document.querySelector('#selectEditSalesOpptProcessPopup > iframe').contentWindow.document.querySelector('#sexCd_listbox > li:nth-child(1)').click();//li:nth-child(1)为男,2为女
运行结果:undefined,但是已经执行成功.然后提交数据后性别栏是空值.
我尝试过使用change触发事件,但是结果一样.反复测试后我发现只有客户信息框架是初次打开,执行代码后提交都会失败,但是如果是第二次以上打开客户信息框架的,执行都能成功
我想要达到的结果:新增客户进来,初次打开框架下的客户信息框,执行代码能够成功选择性别并且成功提交数据

img

新增客户信息初次打开框架运行代码结果:

img

客户信息第二次打开框架运行代码结果:

img

这次提交成功,搞不懂了

  • 写回答

7条回答 默认 最新

  • Jackyin0720 2022-11-15 14:00
    关注

    尝试思路:
    解决方案:

    把获取元素的语句放在异步获取到数据,赋值给data中的key之后进行。同时需要给获取元素的语句加上setTimeout。因为setTimeout是宏任务,会在vue的render函数执行之后再执行。
    把获取元素的语句放到updated周期中执行。这种情况下每次视图更新之后都会执行一次获取元素的语句,如果不需要每次视图更新之后都执行,可以在mounted周期中,使用this.$once("hook: updated", function() {...}) ,让获取元素的语句只在updated阶段执行一次。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 11月30日
  • 已采纳回答 11月22日
  • 修改了问题 11月17日
  • 创建了问题 11月15日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效