首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Selenium Webdriver的替代方案

Selenium Webdriver的替代方案
EN

Stack Overflow用户
提问于 2015-04-16 17:47:19
回答 4查看 16.6K关注 0票数 13

我使用C#和Python的Selenium Webdriver从网站获取数据元素,但web抓取的速度非常慢。抓取35000个数据表花了我大约1.5天的时间。使用Selenium Webdriver,我可以执行Javascript来获取Java元素。有没有一些库可以不需要像Webdriver这样的东西来在网页上执行Javascript来检索元素,并且能够点击元素?或者有没有比硒更快的替代品?

EN

回答 4

Stack Overflow用户

发布于 2016-12-13 19:47:23

我建议你使用TestCafe

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

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

see for yourself,TestCafe测试真的很快。但高速测试运行不会影响稳定性,这要归功于内置的智能等待系统。

TestCafe的安装非常简单:

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

2)安装TestCafe open cmd,输入:

代码语言:javascript
运行
复制
npm install -g testcafe

写测试并不是一门火箭科学。这里有一个快速入门: 1)复制-粘贴以下代码到您的文本编辑器,并将其保存为"test.js“

代码语言:javascript
运行
复制
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!');
});

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

代码语言:javascript
运行
复制
testcafe chrome test.js

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

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

票数 6
EN

Stack Overflow用户

发布于 2015-04-16 17:52:45

我建议使用Selenium + PhantomJSDriver (Ghostdriver),它用于图形用户界面较少的浏览器自动化。这样,您就可以轻松地浏览页面,选择元素(您可以选择航班),提交表单,还可以执行一些抓取操作。还支持Javascript。

您可以阅读Selenium文档。您必须下载文件。

在中提供了一个很好的教程forPhantomJSDriver

PhantomJSDriver的配置(来自本教程):

代码语言:javascript
运行
复制
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);   

其他选项(不需要WebDriver):

PhantomJS是一个带有JavaScript应用编程接口的无头WebKit脚本。它具有对各种web标准的快速和本机支持: DOM处理、CSS选择器、JSON、Canvas和SVG。

这是没有图形用户界面的,也有截图的能力。

示例(来自):

代码语言:javascript
运行
复制
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();
});

PS:我建议JSoup用于网络抓取,但它不支持Javascript。PhantomJSDriver为python提供了一个叫做Ghost.py的东西。

票数 3
EN

Stack Overflow用户

发布于 2015-07-20 17:43:35

那LeanFT呢?这是一个新的惠普产品,可以与C#和Java协同工作,用户说他们切换到了LeanFT,“因为Selenium couldn’t handle他们所有的应用程序。”

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29671060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档