First commit
This commit is contained in:
commit
84ca7b3fc3
|
@ -0,0 +1,2 @@
|
||||||
|
package-lock.json
|
||||||
|
node_modules
|
|
@ -0,0 +1,200 @@
|
||||||
|
const {
|
||||||
|
Builder,
|
||||||
|
By,
|
||||||
|
until,
|
||||||
|
WebDriver
|
||||||
|
} = require("selenium-webdriver");
|
||||||
|
const {Options} = require("selenium-webdriver/chrome");
|
||||||
|
require("chromedriver")
|
||||||
|
let sys = new Map();
|
||||||
|
sys.set("seleniumDrivers",[]);
|
||||||
|
sys.set("currentDriver",null);
|
||||||
|
|
||||||
|
|
||||||
|
async function StartSelenium()
|
||||||
|
{
|
||||||
|
let chromeOptions = new Options();
|
||||||
|
//chromeOptions.addArguments("--user-data-dir", )
|
||||||
|
const browser = await new Builder().setChromeOptions(chromeOptions).forBrowser("chrome").build();
|
||||||
|
sys.get("seleniumDrivers").push(browser);
|
||||||
|
sys.set("currentDriver", browser);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function CreateTab()
|
||||||
|
{
|
||||||
|
/**@type {WebDriver} */
|
||||||
|
let tab = sys.get("currentDriver");
|
||||||
|
await tab.switchTo().newWindow();
|
||||||
|
await tab.get("about:blank");
|
||||||
|
return tab.getWindowHandle();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function goTab(index)
|
||||||
|
{
|
||||||
|
/**@type {WebDriver} */
|
||||||
|
let tab = sys.get("currentDriver");
|
||||||
|
if(typeof index == "number")
|
||||||
|
{
|
||||||
|
let windows = await tab.getAllWindowHandles();
|
||||||
|
await tab.switchTo().window(windows[index]);
|
||||||
|
}else{
|
||||||
|
await tab.switchTo().window(index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async function GoLastTab()
|
||||||
|
{
|
||||||
|
/**@type {WebDriver} */
|
||||||
|
let tab = sys.get("currentDriver");
|
||||||
|
let windows = await tab.getAllWindowHandles();
|
||||||
|
await tab.switchTo().window(windows[windows.length - 1]);
|
||||||
|
}
|
||||||
|
async function GoFirstTab()
|
||||||
|
{
|
||||||
|
/**@type {WebDriver} */
|
||||||
|
let tab = sys.get("currentDriver");
|
||||||
|
let windows = await tab.getAllWindowHandles();
|
||||||
|
await tab.switchTo().window(windows[0]);
|
||||||
|
}
|
||||||
|
async function NextTab()
|
||||||
|
{
|
||||||
|
let tab = sys.get("currentDriver");
|
||||||
|
let windows = await tab.getAllWindowHandles();
|
||||||
|
let index = await GetCurrentTabIndex();
|
||||||
|
if(index == windows.length - 1)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await tab.switchTo().window(windows[index + 1]);
|
||||||
|
}
|
||||||
|
async function PrevTab()
|
||||||
|
{
|
||||||
|
let tab = sys.get("currentDriver");
|
||||||
|
let windows = await tab.getAllWindowHandles();
|
||||||
|
let index = await GetCurrentTabIndex();
|
||||||
|
if(index == 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await tab.switchTo().window(windows[index - 1]);
|
||||||
|
}
|
||||||
|
async function GetCurrentTabIndex()
|
||||||
|
{
|
||||||
|
/**@type {WebDriver} */
|
||||||
|
let tab = sys.get("currentDriver");
|
||||||
|
let window = await tab.getWindowHandle();
|
||||||
|
let windows = await tab.getAllWindowHandles();
|
||||||
|
let index = 0;
|
||||||
|
for(;index < windows.length; index++)
|
||||||
|
{
|
||||||
|
let key = windows[index];
|
||||||
|
if(window == key)
|
||||||
|
{
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function WaitElement(selector, timeout = 3000)
|
||||||
|
{
|
||||||
|
/**@type {WebDriver} */
|
||||||
|
let tab = sys.get("currentDriver");
|
||||||
|
await tab.wait(
|
||||||
|
until.elementLocated(By.css(selector)),
|
||||||
|
timeout
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function ClickElement(selector,checkLocated = true, timeout = 3000)
|
||||||
|
{
|
||||||
|
/**@type {WebDriver} */
|
||||||
|
let tab = sys.get("currentDriver");
|
||||||
|
if(checkLocated)
|
||||||
|
{
|
||||||
|
WaitElemen(selector, timeout)
|
||||||
|
};
|
||||||
|
let element = await tab.findElement(By.css(selector));
|
||||||
|
await element.click();
|
||||||
|
}
|
||||||
|
async function ClearElement(selector,checkLocated = true, timeout = 3000)
|
||||||
|
{
|
||||||
|
/**@type {WebDriver} */
|
||||||
|
let tab = sys.get("currentDriver");
|
||||||
|
if(checkLocated)
|
||||||
|
{
|
||||||
|
WaitElemen(selector, timeout)
|
||||||
|
};
|
||||||
|
let element = await tab.findElement(By.css(selector));
|
||||||
|
await element.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function WriteElement(selector, value,checkLocated = true, timeout = 3000)
|
||||||
|
{
|
||||||
|
/**@type {WebDriver} */
|
||||||
|
let tab = sys.get("currentDriver");
|
||||||
|
if(checkLocated)
|
||||||
|
{
|
||||||
|
WaitElemen(selector, timeout)
|
||||||
|
};
|
||||||
|
let element = await tab.findElement(By.css(selector));
|
||||||
|
await element.sendKeys(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function GetAttribute(selector, name, checkLocated = true, timeout = 3000)
|
||||||
|
{
|
||||||
|
/**@type {WebDriver} */
|
||||||
|
let tab = sys.get("currentDriver");
|
||||||
|
if(checkLocated)
|
||||||
|
{
|
||||||
|
WaitElemen(selector, timeout)
|
||||||
|
};
|
||||||
|
let element = await tab.findElement(By.css(selector));
|
||||||
|
return await element.getAttribute(name)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function GetAttribute(selector, name, checkLocated = true, timeout = 3000)
|
||||||
|
{
|
||||||
|
/**@type {WebDriver} */
|
||||||
|
let tab = sys.get("currentDriver");
|
||||||
|
if(checkLocated)
|
||||||
|
{
|
||||||
|
WaitElemen(selector, timeout)
|
||||||
|
};
|
||||||
|
let element = await tab.findElement(By.css(selector));
|
||||||
|
return await element.getAttribute(name)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function SubmitElement(selector, checkLocated = true, timeout = 3000)
|
||||||
|
{
|
||||||
|
/**@type {WebDriver} */
|
||||||
|
let tab = sys.get("currentDriver");
|
||||||
|
if(checkLocated)
|
||||||
|
{
|
||||||
|
WaitElemen(selector, timeout)
|
||||||
|
};
|
||||||
|
let element = await tab.findElement(By.css(selector));
|
||||||
|
return await element.submit()
|
||||||
|
}
|
||||||
|
|
||||||
|
async function Navigate(url)
|
||||||
|
{
|
||||||
|
/**@type {WebDriver} */
|
||||||
|
let tab = sys.get("currentDriver");
|
||||||
|
await tab.get(url);
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.sys = sys;
|
||||||
|
exports.StartSelenium = StartSelenium;
|
||||||
|
exports.ClickElement = ClickElement;
|
||||||
|
exports.WaitElement = WaitElement;
|
||||||
|
exports.ClearElement = ClearElement;
|
||||||
|
exports.WriteElement = WriteElement;
|
||||||
|
exports.GetAttribute = GetAttribute;
|
||||||
|
exports.SubmitElement = SubmitElement;
|
||||||
|
exports.CreateTab = CreateTab;
|
||||||
|
exports.Navigate = Navigate;
|
||||||
|
exports.goTab = goTab;
|
||||||
|
exports.GoLastTab = GoLastTab;
|
||||||
|
exports.GoFirstTab = GoFirstTab;
|
||||||
|
exports.NextTab = NextTab;
|
||||||
|
exports.PrevTab = PrevTab;
|
||||||
|
exports.GetCurrentTabIndex = GetCurrentTabIndex;
|
|
@ -0,0 +1,49 @@
|
||||||
|
const fs = require("fs");
|
||||||
|
const path = require("path");
|
||||||
|
const {
|
||||||
|
createContext,
|
||||||
|
runInContext
|
||||||
|
} = require("vm");
|
||||||
|
|
||||||
|
const {
|
||||||
|
StartSelenium,
|
||||||
|
ClearElement,
|
||||||
|
ClickElement,
|
||||||
|
CreateTab,
|
||||||
|
GetAttribute,
|
||||||
|
SubmitElement,
|
||||||
|
WaitElement,
|
||||||
|
WriteElement,
|
||||||
|
Navigate,
|
||||||
|
goTab,
|
||||||
|
GoLastTab,
|
||||||
|
GoFirstTab,
|
||||||
|
NextTab,
|
||||||
|
PrevTab,
|
||||||
|
GetCurrentTabIndex
|
||||||
|
} = require("./Core/index");
|
||||||
|
|
||||||
|
async function runFile(file)
|
||||||
|
{
|
||||||
|
let fileContext = fs.readFileSync(path.resolve(file),"utf-8");
|
||||||
|
let context = createContext({
|
||||||
|
StartSelenium,
|
||||||
|
ClearElement,
|
||||||
|
ClickElement,
|
||||||
|
CreateTab,
|
||||||
|
GetAttribute,
|
||||||
|
SubmitElement,
|
||||||
|
WaitElement,
|
||||||
|
WriteElement,
|
||||||
|
Navigate,
|
||||||
|
goTab,
|
||||||
|
GoLastTab,
|
||||||
|
GoFirstTab,
|
||||||
|
NextTab,
|
||||||
|
PrevTab,
|
||||||
|
GetCurrentTabIndex
|
||||||
|
});
|
||||||
|
let scope = await runInContext(fileContext + '\n\nmain();', context);
|
||||||
|
}
|
||||||
|
|
||||||
|
process.nextTick(runFile,"./projects/index.js");
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"chromedriver": "^111.0.0",
|
||||||
|
"selenium-webdriver": "^4.8.1"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
async function main()
|
||||||
|
{
|
||||||
|
await StartSelenium();
|
||||||
|
await Navigate("https://argist.com/");
|
||||||
|
};
|
Loading…
Reference in New Issue