标签: automation

如何提高 watir-webdriver 自动化脚本的性能

我遇到的主要问题是从表中提取数据,但任何其他一般提示也将受到欢迎。我正在处理的表大约有 25 列和不同数量的行(从 5 到 50 之间)。

目前我正在抓取表格并将其转换为数组:

require "watir-webdriver"
b = Watir::Browser.new :chrome
b.goto "http://someurl"

# The following operation takes way too long
table = b.table(:index, 1).to_a

# The rest is fast enough
table.each do |row|
    # Code for pulling data from about 15 of the columns goes here
    # ...
end
b.close
Run Code Online (Sandbox Code Playgroud)

table = b.table(:index, 5).to_a当表有20行时,该操作需要一分多钟。看起来将 20 X 25 表的单元格放入数组应该非常快。我需要对 80 多个表执行此操作,因此最终需要 1-2 小时才能运行。为什么需要这么长时间以及如何提高速度?

我尝试过迭代表行,而无需先转换为数组,但性能没有任何改进:

b.table(:index, 1).rows.each do |row|
    # ...
Run Code Online (Sandbox Code Playgroud)

使用 Windows 7 和 Ubuntu 的结果相同。我也尝试过使用 …

ruby performance automation watir watir-webdriver

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

从 Node.js 定期(每天两次)调用 API 来获取数据的最佳方式

我的 Node.js 应用程序使用 Fixer.io API 来获取一些数据。目前,当我到达 URL 时就会进行调用myapp/rate。我的目标是每天自动进行两次此调用,以将数据存储在我的 MongoDB 数据库中。

所以我想知道最好的方法是什么?也许这setInterval()是唯一的方法,但我不这么认为......

我的电话看起来像这样:

router.get('/', (req, res, next) => {
  fixer.latest({ base: 'EUR', symbols: ['CAD'] })
    .then((data) => {
      var currentData = data.rates;
      if (currentData) {
        const currentRate = new Rate({ rate: currentData.CAD });
        currentRate.save((err) => {
          if (err) {
            throw err;
          } else {
            console.log('Data saved successfully!');
          }
        });
      }
    })
    .then(() => {
      Rate.find({}, { rate: 1, _id: 0 }, (err, rates) => {
        if (err) …
Run Code Online (Sandbox Code Playgroud)

javascript api automation mongodb node.js

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

salt 中不允许使用映射值

我得到 Rendering SLS 'base:nginx' failed: 此处不允许映射值;6号线

当我在ansible中运行这段代码时。

parent_dict = [{'nginx-1.13.2.tar.gz':'https://nginx.org/download/nginx-1.13.2.tar.gz'},{'zlib-1.2.11.tar.gz':'https://www.zlib.net/zlib-1.2.11.tar.gz'}]

{% for dict_item in parent_dict %}
   {% for key, value in dict_item.items() %}
  install-zlib:
    cmd.run:
      - name: |
          cd /tmp
          curl -L  {{ value }} -o {{ key }}
          tar xzf {{ key }}
          rm -rf {{ key }}
      - creates: /tmp/{{ key }}
   {% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

linux automation jinja2 salt-stack devops

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

AutoCAD:自动编辑对象属性表

我在 AutoCAD 图形中有几个(许多)对象,每个对象在其首选项中都有相同的属性字段。现在我想用数字填充此属性字段(对象一 - 数字 1,对象二 - 数字 2 等等)。手动输入数字非常耗时,因此我想问您是否有自动化的方法来解决这个问题。

预先非常感谢!

automation attributes label autocad

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

如何检测Android用户使用的自动点击器应用程序?

一些 Android 用户使用 Play 商店中提供的自动点击器应用程序来多次点击。

所以我想检测/阻止尝试使用自动点击器的用户。android中有什么方法可以检测此类用户吗?如果是,那么我们如何检测这些用户?

automation android fraud-prevention detect android-studio

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

尝试单击特定 x 和 y 坐标时出现“将目标移出边界”异常

所以一些奇怪的东西,可能只是我不熟悉与 MoveByOffset() 方法相关的特定规则。所以我也有需要移动鼠标的 x 和 y 坐标,我知道它们是正确的坐标,因为当我的测试到达这行代码时,我实际上可以看到它发生:

actions.MoveByOffset(842, 663).Click().Perform();

当我与单独的元素交互时,问题出现了,我单击一个按钮打开抽屉来验证一些信息,一旦我的脚本验证了它需要的内容,它就会关闭抽屉并尝试执行

actions.MoveByOffset(842, 663).Click().Perform();再次。

除了打开抽屉并关闭它之外,我不会滚动或真正更改屏幕上的任何内容。

但在这一点上,我会得到异常 OpenQA.Selenium.WebDriverException :将目标移出界限 我目前将它放在 try catch 块中,即使当我捕获异常时,它仍然向我抛出相同的异常。

任何帮助、建议或信息将不胜感激

c# selenium automation selenium-webdriver

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

将多个文件中的固定装置和测试导入到 main.js 文件中时,TestCafe “固定装置未定义”错误

我无法将测试和固定装置导入到一个 main.ts 文件中以立即运行所有测试。出于组织目的,我将测试组织到单独的文件夹中。我收到错误:

ERROR Cannot prepare tests due to an error.
ReferenceError: fixture is not defined
Run Code Online (Sandbox Code Playgroud)

我创建了一个 main.ts 文件来运行所有测试。我导入 Fixture()、Test1() 和 Test2()。

主要.ts

import { Fixture } from "../utils/envUtils";
import { Test1 } from "./testSet1/test1";
import { Test2 } from "./testSet2/test2";

Fixture();
Test1();
Test2();
Run Code Online (Sandbox Code Playgroud)

夹具.ts

export const Fixture = () => {
    fixture("Running tests")
}
Run Code Online (Sandbox Code Playgroud)

测试1.ts

export function Test1() {
    test("Test1", async (t: TestController) => {
         ...
    }
}
Run Code Online (Sandbox Code Playgroud)

测试2.ts

export function Test2() {
    test("Test2", async (t: TestController) => { …
Run Code Online (Sandbox Code Playgroud)

testing automation typescript e2e-testing testcafe

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

如何让 bash shell 脚本使用 jq 解析 JSON 文件,然后将结果打印到 PHP 文件?

我是 bash shell 脚本和自动化的新手。我正在尝试创建一个相对简单的脚本,它解析 JSON 文件并从解析的数据中打印一些 PHP。

为了解析 JSON,我想使用 jq。这是我的 bash shell 脚本中执行此操作的代码:

jq . test.json
Run Code Online (Sandbox Code Playgroud)

我的 JSON 中的对象具有有关图像的属性。我将使用 JSON 中的属性是:

num = each image is assigned a number, 1 to infinity
filename = the name of the image file
name = the title of the image
Run Code Online (Sandbox Code Playgroud)

JSON 文件示例:

{
   "num": 1,
   "filename": "trees-in-nature.jpg",
   "name": "Trees In Nature"
}
{
   "num": 2,
   "filename": "running-dogs.jpg",
   "name": "Running Dogs"
}
{
   "num": 3,
   "filename": "beautiful-lake.jpg",
   "name": "Beautiful Lake"
}
Run Code Online (Sandbox Code Playgroud)

我想获取解析后的 JSON 属性并将其输出到一些 …

bash shell automation jq

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

为什么 cypress 在 for 循环中只循环一次

为什么 cypress 在 for 循环中只循环一次?

测试代码是这样的:

cy.get('body').contains('Automation').each(($el, index) => {
  cy.get('body').contains('Automation').parents()
    .eq(1)
    .find('mfc-dropdown > div > mfc-button > button', { timeout: 6000 })
    .first()
    .click({ force: true });
  cy.get(this.DELETE_FILE_BUTTON).click();
  cy.get('.mfc-dialog-container')
    .find(this.CONFIRM_DELETE)
    .click({ force: true });
});
Run Code Online (Sandbox Code Playgroud)

automation typescript cypress cypress-each

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

当谷歌工作表获得新值时,如何运行 python 脚本?

我有一个谷歌工作表,每天 5 次向该工作表附加新值。每次包含值时我都需要运行本地 python 脚本,我该怎么做?

python automation google-sheets google-apps-script airtable

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