Selenium Webdriver的替代品

Rob*_*mit 11 javascript selenium webdriver

我使用Selenium Webdriver for C#和Python来从网站获取数据元素,但网络抓取的速度非常慢.刮掉35000个数据表花了我大约1.5天.使用Selenium Webdriver,我可以执行Javascript来获取Java元素.是否有一些库可用,不需要类似Webdriver的东西在网页上执行Javascript来检索元素,并且还可以点击元素?或者是否有更快的替代Selenium?

Hel*_*eva 7

我建议你使用TestCafe.

在此输入图像描述

TestCafe是用于Web功能测试(e2e测试)的免费开源框架.TestCafe基于Node.js,根本不使用WebDriver.

TestCafe驱动的测试在服务器端执行.为了获得DOM元素,TestCafe提供了强大灵活的选择器系统.TestCafe可以使用ClientFunction功能在测试的网页上执行JavaScript(请参阅我们的文档).

TestCafe测试非常快,请亲自看看.但是,由于内置的​​智能等待系统,高速测试运行不会影响稳定性.

TestCafe的安装非常简单:

1)检查您的PC上是否有Node.js(或安装它).

2)安装TestCafe open cmd并输入:

npm install -g testcafe
Run Code Online (Sandbox Code Playgroud)

写作测试不是火箭科学.这是一个快速入门:1)将以下代码复制粘贴到文本编辑器并将其另存为"test.js"

import { Selector } from 'testcafe';

fixture `Getting Started`
    .page `http://devexpress.github.io/testcafe/example`;

test('My first test', async t => {
    await t
        .typeText('#developer-name', 'John Smith')
        .click('#submit-button')
        .expect(Selector('#article-header').innerText).eql('Thank you, John Smith!');
});
Run Code Online (Sandbox Code Playgroud)

2)在cmd中键入以下命令,在浏览器中运行测试(例如chrome):

testcafe chrome test.js
Run Code Online (Sandbox Code Playgroud)

3)在控制台输出中获取描述性结果.

TestCafe允许您针对各种浏览器进行测试:本地,远程(在设备上,无论是用于Raspberry Pi的浏览器还是用于iOS的Safari),云(例如Sauce Labs)或无头(例如Nightmare).这意味着您可以轻松地将TestCafe与Continious Integration基础结构一起使用.


Lit*_*nda 3

我建议 Selenium + PhantomJSDriver (Ghostdriver),它用于无 GUI浏览器自动化。通过此功能,您可以轻松浏览页面、选择元素(您可以选择航班)、提交表单以及执行一些抓取操作。还支持 JavaScript。

您可以在此处查看 Selenium 文档。您必须下载phantomjs.exe文件。

这里给出了 PhantomJSDriver 的一个很好的教程

PhantomJSDriver 的配置(来自教程):

DesiredCapabilities caps = new DesiredCapabilities();
caps.setJavascriptEnabled(true); // not really needed: JS enabled by default
caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "C://phantomjs.exe");
caps.setCapability("takesScreenshot", true);
WebDriver driver = new PhantomJSDriver(caps);   
Run Code Online (Sandbox Code Playgroud)

其他选项(这不需要 WebDriver):PhantomJS

PhantomJS 是一个可使用 JavaScript API 编写脚本的无头 WebKit。它对各种 Web 标准提供快速且原生的支持:DOM 处理、CSS 选择器、JSON、Canvas 和 SVG。

这是无 GUI 的,并且还具有截屏功能。

示例(来自此处):

var page = require('webpage').create();
page.open('http://example.com', function(status) {
  console.log("Status: " + status);
  if(status === "success") {
    page.render('example.png');
  }
  phantom.exit();
});
Run Code Online (Sandbox Code Playgroud)

PS:我建议使用 JSoup 进行网页抓取,但它不支持 Javascript。PhantomJSDriver 有一个用于 python 的名为 Ghost.py 的东西。