nodejs selenium-webdriver 查找元素定位

使用 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. 在表中查找元素。
    战略:
    1)找到列名,因为它是表中的第一行,然后移动到下一行,因为所有行都是彼此的兄弟姐妹和父表的孩子。
  2. 在下面的例子中, 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

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注