<分区>
我使用用于 C# 和 Python 的 Selenium Webdriver 从网站获取数据元素,但是网络抓取的速度非常慢。抓取 35000 个数据表花了我大约 1.5 天的时间。使用 Selenium Webdriver,我可以执行 Javascript 来获取 Java 元素。是否有一些可用的库不需要像 Webdriver 这样的东西来在网页上执行 Javascript 来检索元素并且也能够点击元素?还是有比 Selenium 更快的替代品?
<分区>
我使用用于 C# 和 Python 的 Selenium Webdriver 从网站获取数据元素,但是网络抓取的速度非常慢。抓取 35000 个数据表花了我大约 1.5 天的时间。使用 Selenium Webdriver,我可以执行 Javascript 来获取 Java 元素。是否有一些可用的库不需要像 Webdriver 这样的东西来在网页上执行 Javascript 来检索元素并且也能够点击元素?还是有比 Selenium 更快的替代品?
最佳答案
我建议你使用TestCafe .
TestCafe 是用于网络功能测试(端到端测试)的免费开源框架。 TestCafe 基于 Node.js,根本不使用 WebDriver。
TestCafe 支持的测试在服务器端执行。为了获取 DOM 元素,TestCafe 提供了强大而灵活的选择器系统。 TestCafe 可以使用 ClientFunction 功能在测试网页上执行 JavaScript(请参阅我们的文档)。
TestCafe 测试真的非常快,see for yourself .但由于内置智能等待系统,高速测试运行不会影响稳定性。
TestCafe 的安装非常简单:
1) 检查您的 PC 上是否安装了 Node.js(或安装它)。
2) 要安装 TestCafe 打开 cmd 并输入:
npm install -g testcafe
写作测试不是火箭科学。这是一个快速开始: 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!');
});
2) 通过在 cmd 中键入以下命令在浏览器(例如 chrome)中运行测试:
testcafe chrome test.js
3) 在控制台输出中获取描述性结果。
TestCafe 允许您针对各种浏览器进行测试:本地、远程(在设备上,无论是用于 Raspberry Pi 的浏览器还是用于 iOS 的 Safari)、云(例如 Sauce Labs)或 headless (例如 Nightmare)。这意味着您可以轻松地将 TestCafe 与您的持续集成基础架构一起使用。
关于javascript - Selenium Webdriver 的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29671060/
相关文章:
java - 错误 : More than one file was found with OS independent path 'META-INF/DEPENDENCIES'
java - @FindBy 注解定义的 Webelement 返回空指针
java - 如何使用 Selenium WebDriver 获取 CSS 选择器?
Python Selenium - 尝试单击链接时出现 'ElementNotVisibleException' 错误
javascript - 使用 Jquery 为 ID、href 和 aria-controls 添加动态值
javascript - 我的 PhoneGap 应用程序无法访问我的 Web 服务
javascript - 如何将从后端渲染的参数传递给 angular2 bootstrap 方法
java - 使用 Selenium WebDriver 和 Java 切换选项卡
Python- Selenium : Chrome headless setting does not work with "WebDriverWait"