Xpath to CSS conversion

Xpath to CSS conversion

本文关键字:conversion CSS to Xpath      更新时间:2023-09-26

我在将几个特定的xpath转换为css选择器时遇到问题。尝试了几次接近,但最终放弃了:/也许它特定于我的测试框架(量角器)或我做错了。

任何人都可以帮助转换下面的四个吗?

findElement(by.xpath('//*[@id="availableDomains"]/li[1]'))
pageMain.prototype.newUser = function (userId) {
    return element(by.xpath('//tbody//tr[td[contains(text(), "' + userId + '")]]'));
};
UsersPage.prototype.rowFor = function (user) {
    return element(by.xpath('//tr[@data-user="' + user.id + '"]'));
};
findElement(by.xpath('//*[@class="table table-striped"]/tbody/tr[1]/td[5]'))

有些东西仍然更容易通过XPath获得,尽管建议不要使用XPath定位技术。不过,您仍然可以使用不同的定位机制以不同的方式解决此问题:

element(by.xpath('//*[@id="availableDomains"]/li[1]'))

将转换为以下 CSS 选择器:

$('#availableDomains li:first-child')

而不是:

element(by.xpath('//tbody//tr[td[contains(text(), "' + userId + '")]]'))

by.cssContainingText可用于:

element(by.cssContainingText("tbody tr td", userId));

这部分:

element(by.xpath('//tr[@data-user="' + user.id + '"]'));

可以转换为:

$('tr[data-user="' + user.id + '"]');

作为奖励,如果您想强制执行"永远不要使用 XPaths"规则,有一个eslint-plugin-protractor ESLint 插件可以警告您代码库中by.xpath()使用情况。