使用 Node js selenium Web 驱动程序测试您的网页的技术。
1)转到一个html页面:
等待 driver.get('https://xy.pyq.com');
2)等到你找到一个使用占位符值的元素:
await driver.wait(until.elementLocated(By.xpath(“//input[@placeholder='username@example.com']”),2000));
注意:2000 是可以等待的最大毫秒数。
3) 将值写入输入框:
await element.sendKeys('我的名字);
4)使用属性值查找元素:
let e3 = await driver.findElement(By.xpath(“//div[@data-testid='login']”));
5) 点击一个元素:
等待 e3.click();
6) 查找具有精确文本值的元素:
await driver.wait(until.elementLocated(By.xpath(“///*[text()='POS']”),120000));
await driver.wait(until.elementLocated(By.xpath(“///*[text()='Coke']”),120000));
7) 等待页面加载:
const delay = ms => new Promise(res => setTimeout(res, ms))
等待延迟(5000);
8) 查找包含子串的元素:
let totalDue = await driver.findElement(By.xpath(“//div[contains(text(),'Total Due')]”));
9) 找到一个元素,它是另一个元素的兄弟元素,并且位于它旁边:
let totalDue = await driver.findElement(By.xpath(“//div[contains(text(),'Total Due')]/following-sibling::div”));
注意:这里我要定位一个带有文本 Total Due 的元素,然后转到下一个元素,即它的同级 div 元素。
如果您能找到一个元素,下面的文档将有助于追踪其他元素。
参考: : https //www.w3schools.com/xml/xpath_axes.asp
10) 获取元素的文本值
让值 = 等待 totalDue.getText();
更复杂的 Xpath:
- 在表中查找元素。
战略:
1)找到列名,因为它是表中的第一行,然后移动到下一行,因为所有行都是彼此的兄弟姐妹和父表的孩子。 - 在下面的例子中, Type 是一个列名。 我想获取以 $ 作为子字符串的列的值
await driver.wait(until.elementLocated(By.xpath(“//div[text()='Type']/ancestor::div/ancestor::div/following-sibling::div/descendant::div[contains (text(),'$')]”),120000));
此上述的Xpath依赖于HTML贝 Ñ 克呈现。 所以根据你的要求调整它。
您也可以在 Google Chrome 中测试您的 Xpath。 去检查和ctrl+F。
在底部,您可以放置 xpath 并按 Enter 键检查 xpath 是否可以找到您的元素。
摘自
https://arunrajeevan.medium.com/selenium-using-node-41a48a71687f