环境:
\n操作系统:Big Sur 11.1
\nHomebrew 3.2.13
\nPython 3.9.7
命令:
\nchromedriver \xe2\x80\x94version
尝试运行 chromedriver 的 .py 文件输出出错:
\nraise WebDriverException(selenium.common.exceptions.WebDriverException: Message: Service /opt/homebrew/bin/chromedriver unexpectedly exited. Status code was: -9
如警报中所述,尝试更新 chromedriver:
\n卸载当前版本:
\nbrew uninstall chromedriver
验证 chromedriver 是否已卸载:
\nbrew info chromedriver
安装最新版本的 chromedriver:
\nbrew install chromedriver
您还可以尝试:
\nbrew reinstall chromedriver
如果您仍然遇到该问题,此修复对我有帮助。
\n确定正在使用哪个 chromedriver,运行:
\nwhich chromedriver …
是否可以在一个浏览器窗口中为剧作家/测试运行多个测试?
目前它将点击 browser.close(); 每次测试后,即使他们在同一页面上进行测试,这也会在测试上花费大量额外时间。
test.beforeAll(async ({ browser }) => {
const context = await browser.newContext();
const page = await context.newPage();
await page.goto('https://example.com');
});
test('nav test', async ({ page }) => {
const name = await page.innerText('.navbar__title');
expect(name).toBe('Playwright');
});
test('header test', async ({ page }) => {
const name = await page.innerText('.navbar__header');
expect(name).toBe('Playwright');
});
Run Code Online (Sandbox Code Playgroud) 我想知道调用WebElement的click()方法与通过id查找元素和使用JavaScript 触发事件之间的区别是什么.click
为了清楚第一种方法,我称之为WebElement.click()的一个实例:
myWebElement.click();
Run Code Online (Sandbox Code Playgroud)
第二种技术是:
((JavascriptExecutor)driver).executeScript("document.getElementById('myElementID').click()");
Run Code Online (Sandbox Code Playgroud)
我很想知道这两种点击web元素的技术之间的差异,以及每种技术的优点和缺点.
我有一个初始状态为disabled- 的按钮-
<button type = "submit" class="ant-btn ant-btn-primary ant-btn-lg" disabled>
Run Code Online (Sandbox Code Playgroud)
disabled一旦满足条件,该属性就不存在 - 因此HTML变为
<button type = "submit" class="ant-btn ant-btn-primary ant-btn-lg">
Run Code Online (Sandbox Code Playgroud)
我想检查按钮是否具有属性disabled,但是由于该属性没有值,我无法找到这样做的方法.
例如,如果disabled属性有这样的东西
<button type = "submit" class="ant-btn ant-btn-primary ant-btn-lg" disabled = "disabled">
Run Code Online (Sandbox Code Playgroud)
然后我可以做这样的事情
let button = await page.$('button');
let valueHandle = await input.getProperty('disabled');
assert.equal(await valueHandle.jsonValue(), 'disabled');
Run Code Online (Sandbox Code Playgroud)
但由于属性没有价值,在这种情况下如何处理?
我正在使用Ubuntu 14.04.我需要跑mvn 3.3.3.目前,安装的mvn版本为3.0.5.当我进入
sudo apt-get install maven
它说
maven is already the newest version
有没有办法强制安装mvn 3.3.3?
假设我有一个像这样的JSON数组
[{"name":"Lenovo Thinkpad 41A4298","website":"google"},
{"name":"Lenovo Thinkpad 41A2222","website":"google"},
{"name":"Lenovo Thinkpad 41Awww33","website":"yahoo"},
{"name":"Lenovo Thinkpad 41A424448","website":"google"},
{"name":"Lenovo Thinkpad 41A429rr8","website":"ebay"},
{"name":"Lenovo Thinkpad 41A429ff8","website":"ebay"},
{"name":"Lenovo Thinkpad 41A429ss8","website":"rediff"},
{"name":"Lenovo Thinkpad 41A429sg8","website":"yahoo"}]
Run Code Online (Sandbox Code Playgroud)
我想获得一个值等于的所有names 的数组.websitegoogle
首先,过滤JSON阵列为只包含其中的条目website就是google,我有这样的:
var data_filter = data.filter( element => element.website =="google");
console.log(data_filter);
Run Code Online (Sandbox Code Playgroud)
得出以下结果:
[{"name":"Lenovo Thinkpad 41A4298","website":"google"},
{"name":"Lenovo Thinkpad 41A2222","website":"google"},
{"name":"Lenovo Thinkpad 41A424448","website":"google"}]
Run Code Online (Sandbox Code Playgroud)
接下来我需要做什么来获得name一个单独的数组.我试过这样做:
let new_array = [];
new_array.push(data_filter.body.name)
Run Code Online (Sandbox Code Playgroud)
这给了我一个未定义的错误name.我也尝试过:
new_array.push(data_filter.name)
new_array.push(data_filter.body[0].name)
Run Code Online (Sandbox Code Playgroud)
但这些方法都不起作用.我在这里错过了什么?
仅供参考 - JSON数据和过滤方法在此SO 帖子中提及- OP和答案.
自从过去两天以来,我面临一个相当混乱的问题.我正在开发一个文档管理系统,它使用从SOLR中提取数据的API.数据约为15Mbs,并提取超过4000个文档的记录.API有这种格式的响应 -
{
"documents": [
{
id: 123,
some_field: "abcd",
some_other_field: "abcdef"
},
{
id: 124,
some_field: "abcd1",
some_other_field: "abcdef1"
}
]
}
Run Code Online (Sandbox Code Playgroud)
在浏览器中一切正常.如果我在Chrome或Firefox浏览器中点击端点,它会给我正确的输出,我能够看到JSON输出.
但是,如果我尝试使用Java或JS代码访问相同的API端点 - 响应代码为200,但控制台(终端或Eclipse)中\u0089 \u0078 U+0080的输出显示类似的unicode字符- 所有输出都以这种方式出现,并且因为有API提取了大约4000多条记录,控制台有点填充所有这些unicode字符.
我在浏览器和代码之间看到的唯一区别是,在浏览器中我可以看到Content-Encoding : gzip,而我无法从我编写的代码中找到此标头.例如 - 在JS代码中,通过Chakram框架,我可以检查
expect(response).to.be.encoded.with.gzip
这里提到的.但是,这会返回失败说明expected undefined to match gzip
我在这里错过了什么?这是与编码/解码有关的东西还是完全不同的东西?
编辑1:NetworkChrome标签中显示的响应标题:
cache-control: max-age=0, private, must-revalidate, max-age=315360000
content-encoding: gzip
content-type: application/json; charset=utf-8
date: Tue, 22 May 2018 06:07:26 GMT
etag: "a07eb7c1eef4ab97699afc8d61fb9c5d"
expires: Fri, 19 May 2028 06:07:26 GMT
p3p: …Run Code Online (Sandbox Code Playgroud) 当 Chromium 成功启动时,它的 Debugging WebSocket URL 应该类似于ws://127.0.0.1:9222/devtools/browser/ec261e61-0e52-4016-a5d7-d541e82ecb0a.
127.0.0.1:9222应该能够通过 Chrome 浏览以检查无头 Chromium。但是,在对我的应用程序进行 dockerize 后,我无法通过 Chrome 访问远程调试器 URL。
由 Puppeteer 启动铬的launchOption:
{
"args": [
"--remote-debugging-port=9222",
"--window-size=1920,1080",
"--mute-audio",
"--disable-notifications",
"--force-device-scale-factor=0.8",
"--no-sandbox",
"--disable-setuid-sandbox"
],
"defaultViewport": {
"height": 1080,
"width": 1920
},
"headless": true
}
Run Code Online (Sandbox Code Playgroud)
Dockerfile:
FROM node:10.16.3-slim
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
&& sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
&& apt-get update \
&& apt-get install -y google-chrome-unstable …Run Code Online (Sandbox Code Playgroud) 我试图在简单的Python测试中运行Jenkins.这是我第一次,所以我按照本教程中提到的步骤进行操作:链接
触发构建后,我的Jenkins控制台输出显示失败,因为找不到任何修订.
这是控制台输出:
Started by user anonymous
Building in workspace /usr/share/tomcat7/.jenkins/jobs/PythonUIProject/workspace
> git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> git config remote.origin.url /home/rahul/PycharmProjects/.git/ # timeout=10
Fetching upstream changes from /home/rahul/PycharmProjects/.git/
> git --version # timeout=10
> git -c core.askpass=true fetch --tags --progress /home/rahul/PycharmProjects/.git/ +refs/heads/*:refs/remotes/origin/*
Seen 0 remote branches
ERROR: Couldn't find any revision to build. Verify the repository and branch configuration for this job.
Finished: FAILURE
Run Code Online (Sandbox Code Playgroud)
我的Git安装文件夹是:home/rahul/PycharmProjects/,我的系统是Ubuntu 14.04 LTS. …
我想在量角器中上传图像文件。问题是我无法在"input[type = "file"]"不点击上传按钮的情况下获取元素。
当我点击上传按钮时,文件上传对话框弹出。
我试过了
browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); 但它不起作用。
这就是我正在做的:
var image = '../images/image1.png';
var absPathImg = path.resolve(__dirname, image);
element(by.id('uploadImage')).click();
browser.actions().sendKeys(protractor.Key.ESCAPE).perform();
element(by.css('input[type=file]')).sendKeys(absPathImg);
element(by.id('upload')).click();
Run Code Online (Sandbox Code Playgroud)
如何关闭该文件上传对话框以上传图像?
javascript ×4
puppeteer ×2
selenium ×2
api ×1
arrays ×1
docker ×1
e2e-testing ×1
encoding ×1
git ×1
java ×1
jenkins ×1
json ×1
maven ×1
node.js ×1
playwright ×1
protractor ×1
python ×1
ubuntu ×1