【发布时间】:2020-06-27 02:29:28
【问题描述】:
我正在尝试使用 Selenium-Webdriver 和 NodeJs 设置以下操作:
- 打开火狐
- 访问 Google.com
- 在 Google 中搜索名称
- 等待页面加载
- 选择并单击第二页旁边的。
我被困在最后一步,并在 StackOverflow 上搜索了类似的问题,但没有一个答案允许我找到“下一步”或“第 2 页”的或标记。我什至通过检查复制了完整的 XPath,但总是收到“NoSuchElementError”。
感谢您的帮助。
const { Builder, By, Key, until, Wait } = require('selenium-webdriver');
require('geckodriver');
const faker = require('faker');
const searchGoogle = async () => {
let name = faker.name.findName();
let driver = await new Builder().forBrowser('firefox').build();
try {
await driver
.manage()
.window()
.maximize();
await driver.manage().deleteAllCookies();
await driver.get('http://google.com');
await driver.findElement(By.name('q')).sendKeys(name, Key.RETURN);
await driver.wait(until.titleIs(name), 1000);
await driver
.findElement(By.xpath("//span[contains(text(), 'Next')]"))
.click();
} catch (err) {
console.error(err);
} finally {
driver.quit();
console.log('complete!');
}
};
searchGoogle();
【问题讨论】:
-
尝试使用 Wait 进行试验,等到此“下一步”显示或可点击。 stackoverflow.com/questions/16882860/…。定位器绝对正确,刚刚在 python 中尝试过,它为我点击了它。
-
@tony 我认为问题是下一个按钮不在视图中,在执行点击事件之前编写一个脚本在页面中向下滚动。
-
@subbu,非常感谢。我根据您的建议制作了脚本来做到这一点。它在大多数情况下都有效;但是,我认为我仍然需要使用“等待”来加载页面。非常感谢。
标签: javascript node.js selenium-webdriver xpath