簡體   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