繁体   English   中英

如何将 Selenium By 对象转换为 CSS 选择器?

[英]How to convert Selenium By object to a CSS selector?

在 selenium webdriver 中使用By来定位对象是很常见的。 我目前正在使用ByChained选择器,我想知道有没有办法将By对象转换为 CSS 选择器? 例如:

By selector = By.id('something');
String cssSelector = selector.toCSSselector();
// now cssSelector = "#something"

据我所知,没有办法通过代码将一种定位器类型转换为另一种定位器类型。

您可以将任何定位器(某些 XPath 除外,例如包含文本)编写为 CSS 选择器。 只需将它们全部编写为 CSS 选择器即可解决您的问题。 例如,您可以使用 CSS 选择器“#something”来定位您的 id。 如果您需要OR ,只需在 CSS 选择器中添加一个逗号,例如“#someId, #some .cssSelector”是来自 mrfreester 评论的示例。 如果您必须对包含的文本使用 XPath,也有一种方法可以在那里指定OR

这是一个黑客,但它的工作原理(在大多数情况下)。 因此,如果您确实需要,可以使用以下方法:

    public String convertToCssSelectorString(By by) {
        String byString = by.toString();
        if (byString.startsWith("By.id: ")) {
            return "#" + byString.replaceFirst("By\\.id: ", "");
        } else if (byString.startsWith("By.className: ")) {
            return "." + byString.replaceFirst("By\\.className: ", "");
        } else if (byString.startsWith("By.cssSelector: ")) {
            return byString.replaceFirst("By\\.cssSelector: ", "");
        } else {
            throw new RuntimeException("Unsupported selector type: " + byString);
        }
    }

它没有涵盖所有可能的选择器类型,但您可以以相同的方式添加它们。 除了 xpath 选择器,我认为这是不可能的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM