【问题标题】:How can I interact with a third-party web page using JavaScript?如何使用 JavaScript 与第三方网页交互?
【发布时间】:2015-10-05 23:01:42
【问题描述】:

我的公司有一个大量 JavaScript(基于 Backbone)的网站,位于我无法控制的外部域中。我想自动化一些任务。基本上我想点击一些东西,填写一些表单字段,然后提交一个按钮。但是,我还希望能够根据页面中事物的各种状态进行逻辑测试并在​​字段中输入不同的值。

我知道我或许可以为此使用 Selenium,但有其他选择吗?也许是纯 JavaScript 解决方案?

例如,如果我能做到这一点,那就太好了:

$('#someButton').click();

if (parseInt($('#someDiv').text()) > x) {
    $('#someField').val(123);
    someCounter++;
}

$('#submitButton').click();

即使我可以将自定义 JavaScript 注入网页……也可以。

【问题讨论】:

  • 你好乍得。一般来说,关于投票的评论在这里并不是那么有价值,因为选民不会等待阅读和回应这些询问。无论如何,这里的编辑通常都会从问题中删除这类材料,因为未来的读者人数远远超过选民,而且他们对此并不感兴趣。
  • 如果你想避免使用 Selenium,另一种方法是使用PhantomJS。你可以直接使用 JavaScript 来驱动它,而且肯定会有一些库让这个过程变得更容易(我通过 PHP 驱动程序使用它进行功能测试,它非常可靠)。

标签: javascript automation


【解决方案1】:

您可以使用纯 Js 对 selenium 进行此操作。 基本上你需要 WebDriverJs。

这里有一些代码示例。

var webdriver = require('selenium-webdriver');

var driver = new webdriver.Builder().
   withCapabilities(webdriver.Capabilities.chrome()).
   build();

driver.get('http://www.google.com');
driver.findElement(webdriver.By.name('q')).sendKeys('webdriver');
driver.findElement(webdriver.By.name('btnG')).click();
driver.wait(function() {
 return driver.getTitle().then(function(title) {
   return title === 'webdriver - Google Search';
 });
}, 1000);

driver.quit();

更多信息在这里 https://code.google.com/p/selenium/wiki/WebDriverJs

【讨论】:

    【解决方案2】:

    我最终使用了一个书签。基本上我编写了纯 JavaScript,使用http://ted.mielczarek.org/code/mozilla/bookmarklet.html 将其转换为书签,现在我可以在访问页面时单击书签。瞧。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-13
      • 2011-10-06
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      相关资源
      最近更新 更多