eval_in_page javascript执行在Firefox中有效,但在phantomjs中无效

rsgill

我正在尝试使用Perl在Perl中自动化javascript重磅页面Mechanize::PhantomJS用户单击“确定”或“取消”确认警报后,页面上将执行一些javascript。由于我不知道如何按OK,所以我直接执行javascript。问题是,下面的脚本使用火狐(这里我用的时候正常工作Mechanize::Firefox),但不会产生任何结果时使用Mechanize::PhantomJS

$mech->eval_in_page(<<'JS');
   closeChildWindows();
   commandInProgress = true;
   document.dataForm.target="_self";
   document.dataForm.method='post';
   document.dataForm.action="ReviewApptAction";  
   document.dataForm.submit();
JS

在PhantomJS中,脚本通过这些行而不会产生任何错误,但是不会在页面上执行任何操作,这意味着我没有得到任何结果,例如最后提交表单。有人知道这是怎么回事吗?

我想使用Mechanize::PhantomJS它,因为它使我可以同时运行脚本的多个实例,这与firefox不同。

让我更清楚地说明这一点:我必须按下一个带有onclick javascript的按钮:

<a href="javascript:bookAppointment()" onmouseover="window.status='Next Screen';return true" onmouseout="window.status='';return true">
            <img src="../images/include/buttonnext.gif" width="61" height="16" border="0" alt="Next Screen"></a>

该按钮调用的功能是这样的:

function bookAppointment()
{
    if ( confirm("Book this appointment?") )
    {
         if ( !commandInProgress) {
                closeChildWindows();
                commandInProgress = true;
                document.dataForm.target="_self";
                document.dataForm.method='post';
                document.dataForm.action="ReviewApptAction";  
                document.dataForm.submit();
         }
         else {
              alert("Request has been submitted but not yet processed by the server.  Please press OK and wait for response...");
         }
    }
    return;

}

首先,我曾经$mech->confirm( 'Really do this?' [ => 1 ])在“确认”对话框中单击“确定”,但这没有用。因此,我只是简单地发出了可以单击的命令。

这是黑色的

您误读了文档

$mech->confirm( 'Really do this?' [ => 1 ])

记录确认(默认为“ 1”或“确定”)[...]

正如Artjom B.在评论中所说,[ => 1 ]表示第二个参数是可选的,默认值为1。如果要传递第二个参数,则必须删除方括号,因为以下内容是无效的Perl代码,并且将导致语法错误:

$mech->confirm( 'Really do this?' [ => 1 ]);
syntax error at ./foo line 42, near "'Really do this?' ["
Execution of ./foo aborted due to compilation errors.

要点击“确定”,请执行以下操作:

$mech->confirm( 'Really do this?' => 1);

或由于默认值为1,因此只需:

$mech->confirm( 'Really do this?' );

如果要取消对话框,请使用:

$mech->confirm( 'Really do this?' => 0 );

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

eval('1 + 1')在JavaScript中有效,但在PHP中无效

来自分类Dev

eval_in_page 问题 - 尝试插入数组

来自分类Dev

测试在浏览器中有效,但在PhantomJS中无效

来自分类Dev

单一测试在PhantomJS中失败,但在Chrome和Firefox中有效

来自分类Dev

按特定键在JavaScript中执行某些操作在Chrome中有效,但在Firefox中不起作用

来自分类Dev

内联在 CSS 中的 SVG 在 Chrome/Edge 中有效,但在 Firefox 中无效

来自分类Dev

过渡在Firefox中有效,但在Webkit浏览器中无效

来自分类Dev

链接在Firefox中有效,但在Chrome和Safari中无效

来自分类Dev

jQuery Bootstrap在Firefox中有效,但在IE10中无效

来自分类Dev

解构错误对象在Chrome中有效,但在Firefox中无效。该怎么办?

来自分类Dev

代码在Firefox Scratchpad中有效,但在代码中无效

来自分类Dev

jQuery Click 功能在 Firefox 中有效,但在 Chrome/Safari 中无效

来自分类Dev

Selenium 测试用例在 Firefox 中有效,但在 Chrome 中无效 - Headless Setup

来自分类Dev

使用 webdriver (C#) 上传文件在 Firefox 中有效,但在 IE 中无效

来自分类Dev

伪元素在 Firefox 中有效,但在 Chrome 中无效,为什么?

来自分类Dev

查询在sql中有效,但在php中无效

来自分类Dev

regEx在notepad ++中有效,但在python中无效

来自分类Dev

orphanRemoval在PostgreSQL中有效,但在hsqldb中无效

来自分类Dev

代码在终端中有效,但在脚本中无效

来自分类Dev

orphanRemoval在PostgreSQL中有效,但在hsqldb中无效

来自分类Dev

WritePrivateProfileString 在 main 中有效但在函数中无效

来自分类Dev

$ _POST和javascript –在javascript中有效,但在jquery插件中无效

来自分类Dev

Javascript下载在firefox中停止,但在Chrome中有效

来自分类Dev

位置粘性在 Firefox 中有效,在 Chrome 中无效

来自分类Dev

phantomjs page.evaluate从http://www.google.com/search?q=site刮取“ resultStats”:%s在本地服务器上有效,但在生产服务器上无效

来自分类Dev

UnicodeEncodeError-在Spyder中有效,但在从终端执行时无效

来自分类Dev

SBT远程调试在intellij中有效,但在执行测试时无效

来自分类Dev

Google Maps JavaScript API在浏览器中有效,但在设备上的Cordova应用程序中无效

来自分类Dev

通过javascript为div分配背景在jsfiddle.net中有效,但在代码中无效

Related 相关文章

  1. 1

    eval('1 + 1')在JavaScript中有效,但在PHP中无效

  2. 2

    eval_in_page 问题 - 尝试插入数组

  3. 3

    测试在浏览器中有效,但在PhantomJS中无效

  4. 4

    单一测试在PhantomJS中失败,但在Chrome和Firefox中有效

  5. 5

    按特定键在JavaScript中执行某些操作在Chrome中有效,但在Firefox中不起作用

  6. 6

    内联在 CSS 中的 SVG 在 Chrome/Edge 中有效,但在 Firefox 中无效

  7. 7

    过渡在Firefox中有效,但在Webkit浏览器中无效

  8. 8

    链接在Firefox中有效,但在Chrome和Safari中无效

  9. 9

    jQuery Bootstrap在Firefox中有效,但在IE10中无效

  10. 10

    解构错误对象在Chrome中有效,但在Firefox中无效。该怎么办?

  11. 11

    代码在Firefox Scratchpad中有效,但在代码中无效

  12. 12

    jQuery Click 功能在 Firefox 中有效,但在 Chrome/Safari 中无效

  13. 13

    Selenium 测试用例在 Firefox 中有效,但在 Chrome 中无效 - Headless Setup

  14. 14

    使用 webdriver (C#) 上传文件在 Firefox 中有效,但在 IE 中无效

  15. 15

    伪元素在 Firefox 中有效,但在 Chrome 中无效,为什么?

  16. 16

    查询在sql中有效,但在php中无效

  17. 17

    regEx在notepad ++中有效,但在python中无效

  18. 18

    orphanRemoval在PostgreSQL中有效,但在hsqldb中无效

  19. 19

    代码在终端中有效,但在脚本中无效

  20. 20

    orphanRemoval在PostgreSQL中有效,但在hsqldb中无效

  21. 21

    WritePrivateProfileString 在 main 中有效但在函数中无效

  22. 22

    $ _POST和javascript –在javascript中有效,但在jquery插件中无效

  23. 23

    Javascript下载在firefox中停止,但在Chrome中有效

  24. 24

    位置粘性在 Firefox 中有效,在 Chrome 中无效

  25. 25

    phantomjs page.evaluate从http://www.google.com/search?q=site刮取“ resultStats”:%s在本地服务器上有效,但在生产服务器上无效

  26. 26

    UnicodeEncodeError-在Spyder中有效,但在从终端执行时无效

  27. 27

    SBT远程调试在intellij中有效,但在执行测试时无效

  28. 28

    Google Maps JavaScript API在浏览器中有效,但在设备上的Cordova应用程序中无效

  29. 29

    通过javascript为div分配背景在jsfiddle.net中有效,但在代码中无效

热门标签

归档