From ca8c79a11c40d1ccef2cbebaeae19aacaca30524 Mon Sep 17 00:00:00 2001 From: nobug Date: Sun, 10 Dec 2023 20:49:54 +0800 Subject: [PATCH] Initial commit --- .gitignore | 174 +++++++++++++++++++++++++++++++++++++++++++++++++++ bun.lockb | Bin 0 -> 36927 bytes fitst.ts | 59 +++++++++++++++++ package.json | 20 ++++++ second.ts | 33 ++++++++++ 5 files changed, 286 insertions(+) create mode 100644 .gitignore create mode 100755 bun.lockb create mode 100644 fitst.ts create mode 100644 package.json create mode 100644 second.ts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3632033 --- /dev/null +++ b/.gitignore @@ -0,0 +1,174 @@ +# Logs + +logs +_.log +npm-debug.log_ +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) + +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# Runtime data + +pids +_.pid +_.seed +\*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover + +lib-cov + +# Coverage directory used by tools like istanbul + +coverage +\*.lcov + +# nyc test coverage + +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) + +.grunt + +# Bower dependency directory (https://bower.io/) + +bower_components + +# node-waf configuration + +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) + +build/Release + +# Dependency directories + +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) + +web_modules/ + +# TypeScript cache + +\*.tsbuildinfo + +# Optional npm cache directory + +.npm + +# Optional eslint cache + +.eslintcache + +# Optional stylelint cache + +.stylelintcache + +# Microbundle cache + +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history + +.node_repl_history + +# Output of 'npm pack' + +\*.tgz + +# Yarn Integrity file + +.yarn-integrity + +# dotenv environment variable files + +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) + +.cache +.parcel-cache + +# Next.js build output + +.next +out + +# Nuxt.js build / generate output + +.nuxt +dist + +# Gatsby files + +.cache/ + +# Comment in the public line in if your project uses Gatsby and not Next.js + +# https://nextjs.org/blog/next-9-1#public-directory-support + +# public + +# vuepress build output + +.vuepress/dist + +# vuepress v2.x temp and cache directory + +.temp +.cache + +# Docusaurus cache and generated files + +.docusaurus + +# Serverless directories + +.serverless/ + +# FuseBox cache + +.fusebox/ + +# DynamoDB Local files + +.dynamodb/ + +# TernJS port file + +.tern-port + +# Stores VSCode versions used for testing VSCode extensions + +.vscode-test + +# yarn v2 + +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.\* + +# wrangler project + +.dev.vars +.wrangler/ + +.DS_Store \ No newline at end of file diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..0db33f0664085157db47eb958028c6f99747453a GIT binary patch literal 36927 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 `, title); + // assert.equal("Web form", title); + + await driver.manage().setTimeouts({ implicit: 500 }); + + let textBox = await driver.findElement(By.name('my-text')); + let submitButton = await driver.findElement(By.css('button')); + + await textBox.sendKeys('Selenium'); + + // await new Promise(resolve => setTimeout(resolve, 3000)); + + await submitButton.click(); + + let message = await driver.findElement(By.id('message')); + let value = await message.getText(); + console.debug(`value :>> `, value); + // assert.equal("Received!", value); + } catch (e) { + console.log(e) + } finally { + await new Promise(resolve => setTimeout(resolve, 1000)); + await driver?.quit(); + } +}()) \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..841acd8 --- /dev/null +++ b/package.json @@ -0,0 +1,20 @@ +{ + "name": "selenium-demo", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "mocha": "^10.2.0", + "selenium-webdriver": "^4.16.0" + }, + "devDependencies": { + "typescript": "^5.3.3", + "@types/selenium-webdriver": "^4.1.21" + } +} \ No newline at end of file diff --git a/second.ts b/second.ts new file mode 100644 index 0000000..a9f6c52 --- /dev/null +++ b/second.ts @@ -0,0 +1,33 @@ +import { Builder, By, Capabilities, Key, until } from 'selenium-webdriver'; + +async function runTests() { + // Selenium Server URL (Assuming your Selenium Server is running on localhost at port 4444) + const seleniumServerUrl = "http://localhost:4444/wd/hub"; + + // 使用 Chrome 浏览器 + const capabilities = Capabilities.chrome(); + + // 创建一个 WebDriver 实例 + let driver = new Builder() + .usingServer(seleniumServerUrl) + .withCapabilities(capabilities) + .build(); + + try { + // 你的测试代码 + // 例如,打开 Google 网页 + await driver.get('http://www.google.com'); + + // 找到搜索框并输入查询词 + await driver.findElement(By.name('q')).sendKeys('Hello World', Key.RETURN); + + // 等待搜索结果 + await driver.wait(until.titleContains('Hello World'), 1000); + + } finally { + // 关闭浏览器 + await driver.quit(); + } +} + +runTests().catch(console.error);