我需要检查网页中的所有图像,并使用 selenium webdriver 获取它们的属性,如 src 和宽度等。有人可以帮我吗?
我正在尝试使用Protractor和Jasmine自动化测试用例.问题是我有一个"文章"web元素标记,它在运行时创建,这个web元素有一个as子元素.此div元素具有与之关联的"id"标记.代码的结构如下.
<article class="a b c d" data-ng-repeat="xyz repeat">
<div id="THIS IS WHAT I WANT" class="class name">
</article>
现在我能够掌握文章web元素.但是我无法在div中获取ID属性.ID值是动态生成的.请建议我如何获得ID值.
谢谢
我正在使用量角器和黄瓜框架; 如何突破.filter或.map循环?如果我发现匹配,我不想再继续迭代!
Page.prototype.getElementByKey = function (key) {
var foundElement = null;
return someElement.all(by.css('.someClass')).map(function (rawItem, index) {
var itemObject = new ItemObjectClass(rawItem);
return itemObject.getItemKey().then(function (foundItemKey) {
var matched = String(foundItemKey).trim() === String(key).trim();
console.log(' Matched: { ' + matched + ' } index {'+index+'}');
//if we have a match break out of the .filter function
if (matched) {
foundElement = itemObject;
throw new Error("Just our way of breaking out of .filter() above");
}
});
}).then(function () {
//callback
throw new Error('\n!!!!!Callback should …
Run Code Online (Sandbox Code Playgroud) selenium browser-automation webautomation protractor e2e-testing
我想知道在任何地方的自动化中,“如何添加等待或延迟直到网页完全加载”
等待屏幕切换
但是它会保留该过程直到开发人员指定的某个时间,但是我想增加延迟,直到网页完全加载为止,有没有人可以帮助我?对不起,英语不好。
我有以下 HTML 结构
<div class ="container" id= "12">
<div class="details" desc-type= "multiline">
<a href="#">
<div class="description"> Some Description </div>
</a>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我使用下面的代码抓取这个
const SELECTOR =
"div.container";
const movies = await page.$$eval(
SELECTOR,
nodes =>
nodes.map(element => {
return {
movieID: element.getAttribute("id"),
};
} )
);
Run Code Online (Sandbox Code Playgroud)
如何修改上面的代码,这样我可以阅读desc-type= "multiline"
和innerText
的<div class="description">
?
我正在尝试使用 Puppeteer 自动执行查询该网站上的数据的任务。因此,我需要选择数据集(每日摘要,第一个选项),然后选择位置类型(州,第三个选项),然后选择州(阿拉斯加,第二个选项)。问题是我的代码没有更改为下一个表。因此,在选择数据集中的第一个选项(每日摘要)后,它不会选择第三个选项(州),而是再次选择数据集表中的第三个选项!我是 Puppeteer 的新手,所以我真的不知道该怎么做。任何帮助表示赞赏。
下面是我的代码:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({headless:false})
const page = await browser.newPage()
const navigationPromise = page.waitForNavigation()
await page.goto('https://www.ncdc.noaa.gov/cdo-web/datatools/selectlocation')
await page.waitForSelector('.selectLocationFilters > .datasetContainer > .slideElement > #datasetSelect > option:nth-child(1)')
await page.click('.selectLocationFilters > .datasetContainer > .slideElement > #datasetSelect > option:nth-child(1)')
await page.select('.inset #locationCategorySelect', '')
await page.waitForSelector('.selectLocationFilters > .locationCategoryContainer > .locationCategoryFilter > #locationCategorySelect > option:nth-child(3)')
await page.click('.selectLocationFilters > .locationCategoryContainer > .locationCategoryFilter > #locationCategorySelect > option:nth-child(3)')
await page.select('.inset #selectedState', '')
await …
Run Code Online (Sandbox Code Playgroud)我在 Python 中使用 Playwright,我想将 javascript 注入到一个页面中,该页面监视 DOM 突变并触发自定义事件,并在 Python 中捕获这些事件。
这是一个 Python 脚本示例:
page.evaluate("//js code that essentially dispatches new CustomEvent('newPosts')")
page.on("newPosts", handle_posts)
Run Code Online (Sandbox Code Playgroud)
到目前为止,Python 端没有任何反应,就好像事件不存在一样。
如果我手动检查浏览器控制台,我可以看到事件在浏览器端触发得很好(我正在捕捉它)document.addEventListener('newPosts', fn)
python webautomation dom-events playwright playwright-python
我使用此代码来禁用页面加载中的图像,但不起作用:
_page = await _browser.NewPageAsync();
await _page.SetRequestInterceptionAsync(true);
// disable images to download
_page.Request += (sender, e) =>
{
if (e.Request.ResourceType == ResourceType.Image)
e.Request.AbortAsync();
else
e.Request.ContinueAsync();
};
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我对 Puppeteer 和 JS 非常陌生,但我想知道如何在网页上找到一个元素并在其周围绘制一个边界框,这样如果我进行屏幕截图,该框将可见(我想要整个页面的屏幕截图,但想要还可以查看边界框。
puppeteer ×4
javascript ×3
selenium ×3
protractor ×2
c# ×1
dom-events ×1
e2e-testing ×1
jasmine ×1
java ×1
node.js ×1
playwright ×1
python ×1
rpa ×1