blob: 55516847244bb26f6c9c7ca2b7089808de8f6c25 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
import { Lanthan } from "lanthan";
import { WebDriver, By, until } from "selenium-webdriver";
export default class FormOptionPage {
private webdriver: WebDriver;
constructor(lanthan: Lanthan) {
this.webdriver = lanthan.getWebDriver();
}
async setBlacklist(nth: number, url: string): Promise<void> {
const selector = ".form-blacklist-form-row > .column-url";
const inputs = await this.webdriver.findElements(By.css(selector));
if (inputs.length <= nth) {
throw new RangeError("Index out of range to set a blacklist");
}
await inputs[nth].sendKeys(url);
await this.webdriver.executeScript(
`document.querySelectorAll('${selector}')[${nth}].blur()`
);
}
async setPartialBlacklist(
nth: number,
url: string,
keys: string
): Promise<void> {
let selector = ".form-partial-blacklist-form-row > .column-url";
let inputs = await this.webdriver.findElements(By.css(selector));
if (inputs.length <= nth) {
throw new RangeError("Index out of range to set a partial blacklist");
}
await inputs[nth].sendKeys(url);
await this.webdriver.executeScript(
`document.querySelectorAll('${selector}')[${nth}].blur()`
);
selector = ".form-partial-blacklist-form-row > .column-keys";
inputs = await this.webdriver.findElements(By.css(selector));
if (inputs.length <= nth) {
throw new RangeError("Index out of range to set a partial blacklist");
}
await inputs[nth].sendKeys(keys);
await this.webdriver.executeScript(
`document.querySelectorAll('${selector}')[${nth}].blur()`
);
}
async setSearchEngine(nth: number, name: string, url: string) {
let selector = ".form-search-form-row > .column-name";
let inputs = await this.webdriver.findElements(By.css(selector));
if (inputs.length <= nth) {
throw new RangeError("Index out of range to set a search engine");
}
await inputs[nth].sendKeys(name);
await this.webdriver.executeScript(
`document.querySelectorAll('${selector}')[${nth}].blur()`
);
selector = ".form-search-form-row > .column-url";
inputs = await this.webdriver.findElements(By.css(selector));
if (inputs.length <= nth) {
throw new RangeError("Index out of range to set a search engine");
}
await inputs[nth].sendKeys(url);
await this.webdriver.executeScript(
`document.querySelectorAll('${selector}')[${nth}].blur()`
);
}
async addBlacklist(): Promise<void> {
const rows = await this.webdriver.findElements(
By.css(`.form-blacklist-form-row`)
);
const button = await this.webdriver.findElement(
By.css(".form-blacklist-form .ui-add-button")
);
await button.click();
await this.webdriver.wait(
until.elementLocated(
By.css(`.form-blacklist-form-row:nth-child(${rows.length + 1})`)
)
);
}
async addPartialBlacklist(): Promise<void> {
const rows = await this.webdriver.findElements(
By.css(`.form-partial-blacklist-form-row`)
);
const button = await this.webdriver.findElement(
By.css(".form-partial-blacklist-form .ui-add-button")
);
await button.click();
await this.webdriver.wait(
until.elementLocated(
By.css(`.form-partial-blacklist-form-row:nth-child(${rows.length + 2})`)
)
);
}
async removeBlackList(nth: number): Promise<void> {
const buttons = await this.webdriver.findElements(
By.css(".form-blacklist-form-row .ui-delete-button")
);
if (buttons.length <= nth) {
throw new RangeError("Index out of range to remove blacklist");
}
await buttons[nth].click();
}
async removePartialBlackList(nth: number): Promise<void> {
const buttons = await this.webdriver.findElements(
By.css(".form-partial-blacklist-form-row .ui-delete-button")
);
if (buttons.length <= nth) {
throw new RangeError("Index out of range to remove partial blacklist");
}
await buttons[nth].click();
}
async addSearchEngine(): Promise<void> {
const rows = await this.webdriver.findElements(
By.css(`.form-search-form-row > .column-name`)
);
const button = await this.webdriver.findElement(
By.css(".form-search-form > .ui-add-button")
);
await button.click();
await this.webdriver.wait(
until.elementLocated(
By.css(`.form-search-form-row:nth-child(${rows.length + 1})`)
)
);
}
async setDefaultSearchEngine(nth: number): Promise<void> {
const radios = await this.webdriver.findElements(
By.css(".form-search-form-row input[type=radio]")
);
if (radios.length <= nth) {
throw new RangeError("Index out of range to set a default search engine");
}
await radios[nth].click();
}
}
|