相关疑难解决方法(0)

如何从该函数中获取函数名?

如何从该函数内部访问函数名?

// parasitic inheritance
var ns.parent.child = function() {
  var parent = new ns.parent();
  parent.newFunc = function() {

  }
  return parent;
}

var ns.parent = function() {
  // at this point, i want to know who the child is that called the parent
  // ie
}

var obj = new ns.parent.child();
Run Code Online (Sandbox Code Playgroud)

javascript function

242
推荐指数
12
解决办法
21万
查看次数

Phantomjs - 如何填写表单,提交并获得结果?

我似乎无法做一个简单的表单提交.

以下是我向Google搜索表单提交"测试"并打印结果的代码.

var url = 'http://www.google.com/',
    page = new WebPage();

page.open(url, function(status) {
    if (status !== 'success')
    {
      console.log('Unable to access network');
      phantom.exit();
      return;
    }
    else
    {
        page.includeJs("//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js", function() {
            page.evaluate(function() {
                $('#gbqfq').val("Test");

                $("#gbqfba").click();

            });

            page.render('google.png');
            phantom.exit();
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我如何做到这一点?我在这里和其他地方环顾四周,但似乎没有任何效果.

phantomjs

11
推荐指数
1
解决办法
1万
查看次数

在PhantomJS上我不能包含jQuery,如果没有jQuery,我就无法发布表单数据

我在PhantomJS中运行jQuery时遇到问题.我找到了这个答案,其中讨论了在evaluate函数中没有可用的变量,但问题是关于节点模块,在我的例子中我只调用console.logevaluate函数.我也把这个问题放在了GitHub上.

以前,对于某些页面,以下evaluate代码未执行.现在@ b1f56gd4已经提供了一些帮助,它现在打印消息; 我无法执行它,但现在我可以看到:

https://login.yahoo.com/上的页面从http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js运行了不安全的内容.

我无法从不同的域加载jQuery,--local-to-remote-url-access=true或者--web-security=false选项没有区别.

我将尝试在本地加载jQuery.这是代码:

console.log('Loading a web page');
var url = 'https://login.yahoo.com/'; 
var page = require('webpage').create();
console.log('Setting error handling');
page.onConsoleMessage = function (msg) {
    console.log(msg);
};
page.onError = function (msg, trace) {
    console.log(msg);
    trace.forEach(function(item) {
        console.log('  ', item.file, ':', item.line);
    })
    phantom.exit();
}
console.log('Error handling is set');
console.log('Opening page');
page.open(url, function (status) {
    if (status != 'success') {
        console.log('F-' + status);
    } …
Run Code Online (Sandbox Code Playgroud)

javascript evaluate phantomjs

8
推荐指数
1
解决办法
2万
查看次数

PhantomJS并单击表单按钮

我有一个非常简单的HTML表单,我试图用各种数据进行测试.我使用IE对象在MS Access/VBA中编写了一个原型概念验证.它工作正常,但完成的测试产品必须使用PhantomJS.我有页面连接工作,表格填充得很好.我被困的地方是让提交按钮开火.我已经梳理了SO并尝试了所有建议,但没有任何工作.我正在使用PhantomJS 1.9.7并使用直接的JavaScript测试脚本.

我尝试了各种JavaScript技术来触发提交按钮.为了满足"Just use JQuery"的用户群,我也试过了.什么都行不通.当我在测试脚本的末尾渲染表单时,我看到填充了数据的表单耐心地等待单击<search>按钮.

以下是我尝试过的摘要:

  1. document.getElementById('btnSearch').click();
  2. $("btnSearch").click();
  3. var el = document.getElementById('btnSearch'); // Get search button object
    $(el).click();
  4. document.getElementById('Form1').submit();
  5. 试图创建一个click事件并从按钮对象中触发它(在下面的代码中)
  6. 尝试创建一个click事件并使用相关按钮内点的坐标从body对象中触发它

以下是表格:(并且请不要对缺少CSS,使用表格等进行评论/辩论.我对创建网站的人没有任何发言权或影响力.)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<HTML>
    <HEAD>
        <title>Da Site</title>
    </HEAD>
    <body>
    <form name="Form1" method="post" action="Default.aspx" id="Form1">
    <TABLE id="Table2" cellSpacing="2" cellPadding="1" border="0">
      <TR>
        <TD>Street Address:</TD>
        <TD><input name="Address" type="text" maxlength="100" id="Address" /></TD>
      </TR>
      <TR>
        <TD>City:</TD>
        <TD><input name="City" type="text" maxlength="100" id="City" style="width:232px;"/></TD>
      </TR>
      <TR>
        <TD>State:</TD>
        <TD><select name="State" id="State">
                    <option value=""></option>
                    <option value="AL">AL - Alabama</option>
                    <option …
Run Code Online (Sandbox Code Playgroud)

javascript forms jquery automated-tests phantomjs

6
推荐指数
1
解决办法
2万
查看次数

如何使用PhantomJS提交表格?

我熟悉PhantomJS.但我不能得到一件事.我有一个简单形式的页面:

<FORM action="save.php" enctype="multipart/form-data" method="GET" onSubmit="return doSubmit();">
    <INPUT name="test_data" type="text">
    <INPUT name="Submit" type="submit" value="Submit">
</FORM>
Run Code Online (Sandbox Code Playgroud)

并且save.php只记下test_data值

所以我这样做:

page.evaluate(function() {
    document.forms[0].test_data.value="555";
    doSubmit();
});
Run Code Online (Sandbox Code Playgroud)

渲染页面时,我看到文本字段是555,但表单没有提交,save.php没有记下test_data值.所以doSubmit()不执行,是吗?doSubmit()是一个简单的验证步骤,提交应该加载下一页.

所以问题是:如何使用PhantomJS在页面上执行javascript代码?

javascript form-submit phantomjs

6
推荐指数
1
解决办法
2万
查看次数