我正在使用Selenium-webdriver,我需要通过“文本”选择一个元素。因此,我正在使用xpath。但是,值会有所不同,因此我使用了一个变量。请告诉我如何解决此问题,或者做一个更好的方法。
代码:
const { Builder, By, Key, until } = require('selenium-webdriver');
let category = null;
category = "jackets";
async function main() {
let driver = new Builder().forBrowser('chrome').build();
driver.get('https://supremenewyork.com');
driver.findElement(By.className('shop_link')).click();
let element0 = await driver.wait(until.elementLocated(By.xpath("//*[contains(@href,'http://www.supremenewyork.com/shop/all')]", 10000)));
await element0.click();
//bugged code start below
let element1 = await driver.wait(until.elementLocated(By.xpath("//*[contains(text(),"+category+")]", 10000)));
await element1.click();
//bugged code end
}
main();
错误是:
WebDriverError: unknown error: Failed to execute 'getComputedStyle' on 'Window': parameter 1 is not of type 'Element'.
答案 0 :(得分:2)
您在XPath表达式中的文本值周围缺少引号:
let element1 = await driver.wait(until.elementLocated(By.xpath("//*[contains(text(),'"+category+"')]", 10000)));