标签: webautomation

使用PowerShell通过Internet Explorer的com界面执行javascript

我正在使用PowerShell编写一些Internet Explorer自动化脚本.以下是我启动IE com对象的方法:

$ie = New-Object -com "InternetExplorer.Application"
$ie.Navigate("about:blank")
$ie.visible = $true

$doc = $ie.Document
Run Code Online (Sandbox Code Playgroud)

所以,我想要做的是在$ doc对象上执行一些javascript.例如,我在页面上有一个项目有一个执行"submitCommand('lookup')"的onclick事件,所以我想直接在$ doc上运行它而不必在页面上找到对象然后调用它上面的Click()方法.

由于对象没有名称或id,因此更容易变化,因为我只能依赖它在页面上的位置(例如:页面上的第11个跨度项目).

或者,您如何根据他们的班级选择元素?这会有很大的帮助,因为"按钮"有它自己的类.

谢谢

com powershell internet-explorer webautomation

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

使用SQL Server创建和回滚测试数据

我正在创建一系列Web自动化测试,这些测试要求测试数据位于数据库中(SQL Server 2008).要为每个测试生成所需的数据,我必须调用一些C#代码,这些代码将正确的数据插入到DB中(即我不能只编写SQL脚本来插入数据).我的问题是我不想用这些自动化测试中的大量测试数据来污染我的测试数据库.因此,想要回滚测试期间对数据库所做的所有更改.

任何人都可以提出一个明智的方法来实现这一目标

c# sql-server automated-tests test-data webautomation

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

在Watir中访问没有属性的元素

使用Watir,有没有办法访问没有属性的元素?

例如:

<span>Text</span>
Run Code Online (Sandbox Code Playgroud)

我想避免使用xpath,但如果这是唯一的方式很酷.

automation automated-tests watir webautomation watir-webdriver

6
推荐指数
3
解决办法
6710
查看次数

如何在新窗口中设置WATIR焦点

我是WATIR测试的新手(我喜欢它!)并且已经碰到了如何将我的WATIR脚本重新聚焦到新打开的窗口的问题.这是我的(简化)脚本....

#!/usr/bin/ruby
require 'rubygems'
require 'watir-webdriver'
browser=Watir::Browser.new
browser.goto("http://0:3050")

browser.text_field(:name,"userkey300203830").set("OKJHNB")
browser.button(:id, "interview48").click

puts "Expected Result:"
puts "A successful display of cars"

if browser.window(:title=>"300203830").exists?
   puts " Test passed. New window opened!"
else
   puts " Test Failed! No window found"
end
Run Code Online (Sandbox Code Playgroud)

这一切都可以直到最后.单击"interview48"键后,将打开一个标题为"300203830"的新窗口.看起来我找到了但我现在还不知道如何关注那个窗口.

ruby automated-tests watir webautomation watir-webdriver

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

如何在 Ruby 中刷新 Capybara URL

我一直在使用 Capybara 和 selenium 网络驱动程序来了解网络自动化。我一直在尝试使用 Capybara 刷新特定页面。我见过一些方法,但它们每个都有问题,使它们在某些情况下不可行。

session.visit 链接什么也不做,因为会话已经在那个链接上了。我可以做 session.reset!但后来我失去了登录。

我见过的其他几种方法 - 不要使用 Capybara 的内置等待功能。这意味着如果服务器负载很重 - 或者在我的 DL/UL 速率受限的测试中,“刷新”会发生,但它会迅速尝试在下一页中查找尚不存在的字段,因为它尚未存在加载。

所以我的问题是具体的 - 如何使用 Capybara 的内置等待功能在不丢失登录会话的情况下刷新 Capybara 中的页面?

ruby selenium webautomation capybara

6
推荐指数
3
解决办法
3234
查看次数

Puppeteer - 删除由exposeFunction 公开的函数?

我以下列方式使用exposeFunction-command:

await this.page.exposeFunction('foo', function(){ return 'bar'; });
Run Code Online (Sandbox Code Playgroud)

这按预期工作,并为我提供了 window.foo 函数。

如果我再次调用此代码,则会出现以下错误:

Error: Failed to add page binding with name foo: window['foo'] already exists!
Run Code Online (Sandbox Code Playgroud)

使用 page.goto() 导航时,此错误甚至仍然存在。

有没有办法解除exposeFunction()公开的函数的绑定?

javascript webautomation node.js puppeteer

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

Puppeteer 视口设置在创建 PDF 时不起作用

我正在尝试使用 puppeteer 创建 PDF。创建PDF时设置视口根本没有效果。但是,视口设置确实适用于屏幕截图。过去似乎在 github 上发现了一些问题,但它们显然已被关闭。传入 defaultViewport: null 应该是解决方案。

这是我的代码:

browser = await chromium.puppeteer.launch({
    args: chromium.args,
    defaultViewport: null,
    executablePath: await chromium.executablePath,
    ignoreHTTPSErrors: true,
    headless: true,
});

let page = await browser.newPage();

// Set viewport
await page.setViewport({width: 1440, height: 900, deviceScaleFactor: 2});

// Generate pdf
const doc = await page.pdf(options);
Run Code Online (Sandbox Code Playgroud)

我还尝试在启动时传递视口设置。

谢谢!

javascript webautomation node.js google-chrome-headless puppeteer

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

如何使用 Playwright Python 异步打开多个页面?

我想使用 Playwright for Python 一次打开多个 url。但我正在努力弄清楚如何做。这是来自异步文档:

async def main():
    async with async_playwright() as p:
        for browser_type in [p.chromium, p.firefox, p.webkit]:
            browser = await browser_type.launch()
            page = await browser.newPage()
            await page.goto("https://scrapingant.com/")
            await page.screenshot(path=f"scrapingant-{browser_type.name}.png")
            await browser.close()

asyncio.get_event_loop().run_until_complete(main())
Run Code Online (Sandbox Code Playgroud)

这将按顺序打开每个 browser_type。如果我想并行进行,我该怎么做?如果我想对网址列表做类似的事情,我该怎么做?

我尝试这样做:

urls = [
    "https://scrapethissite.com/pages/ajax-javascript/#2015",
    "https://scrapethissite.com/pages/ajax-javascript/#2014",
]
async def main(url):
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=False)
        page = await browser.newPage()
        await page.goto(url)
        await browser.close()

async def go_to_url():
    tasks = [main(url) for url in urls]
    await asyncio.wait(tasks)

go_to_url()
Run Code Online (Sandbox Code Playgroud)

但这给了我以下错误:

92: RuntimeWarning: …
Run Code Online (Sandbox Code Playgroud)

python webautomation web-scraping playwright playwright-python

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

Chrome - 自动在网络上打开开发工具并保留日志

我正在使用 playwright 进行自动化测试。每次测试运行都会创建一个新的 chromium 实例。当我通过时,--auto-open-devtools-for-tabs它会按预期打开开发工具。但是,我需要更进一步并启用保留日志复选框。测试速度很快,我需要在重定向之前查看请求。

python google-chrome webautomation playwright playwright-python

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

来自C++的Web自动化

我们需要从C++应用程序(登录到应用程序,执行某些操作,注销)中执行一些相当复杂的Web自动化,但性能非常重要,因此我们正在考虑选项.

  1. 有没有办法直接从C++ 驱动WebKit或其他无头引擎,而不需要更多的层(如selenium + webdriver + network communication + ...)?也许是Chromedriver?

  2. 如果无法使用选项1,那么从C++运行WebDriver(使用真实浏览器)的最佳方式是什么?

c++ webdriver webautomation

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