簡體   English   中英

如何連接兩個 webelement,迭代它並從連接的 Xpath 中獲取文本

[英]How to concatenate two webelement, iterate it and get the text out of concatenated Xpath

我正在使用 Page 對象模型

我的頁面對象如下:

    @FindBy(xpath = "//kendo-grid-list//table/tbody/tr/td[9]//div/p")
    List<WebElement> milestoneListSize;

    private static final String milestoneEditButton1 = "//uif-checklist-complex-group[";

    private static final String milestoneEditButton2 = "]//uif-checklist-table/table/tbody/tr/td[6]//a";

    public void clickMilestoneUser(milestoneListSize, String milestoneEditButton1 , String milestoneEditButton2 ) {

        String Actual;
        int totalsize = milestoneListSize.size();

        for (int i = 1; i <= totalsize; i++) {
        Actual = driver.findElement(By.xpath(milestoneEditButton1 + i + milestoneEditButton2)).getText();
        System.out.println(Actual );
        }

    }

不知道為什么這段代碼不起作用? 提前感謝您的幫助

您的代碼有幾個問題,但我無法涵蓋所有​​問題。

  • 您已將里程碑編輯按鈕(1&2) 定義為“私有靜態”字段,這意味着它們可以從此類中的每個方法內部訪問,並且您不需要將它們作為方法參數傳遞。

  • 您可以使用單個字符串模板,而不是使用 2 個單獨的部分來構建定位器:

     private static final String XPATH_EDIT_BTN = "//uif-checklist-complex-group[%d]//uif-checklist-table/table/tbody/tr/td[6]//a";

可用於構造定位器:

By.xpath(String.format(XPATH_EDIT_BTN, i))
  • 每次調用 'Actual = ...' 時,都會重新分配 'Actual' 變量的值。 您應該使用 'Actual += ...' 代替,但最好使用 StringBuilder:

     StringBuilder buffer = new StringBuilder(); for (int i = 1; i <= totalsize; i++) { By loc = By.xpath(String.format(XPATH_EDIT_BTN, i)); buffer.append(driver.findElement(loc).getText()); } System.out.println(buffer.toString());

如果您想要連接結果,請使用第一個代碼,如果您想要單獨的結果,請使用第二個代碼

@FindBy(xpath = "//kendo-grid-list//table/tbody/tr/td[9]//div/p")
List<WebElement> milestoneListSize;

String milestoneEditButton1 = "//uif-checklist-complex-group[%d]//uif-checklist-table/table/tbody/tr/td[6]//a";

public void clickMilestoneUser(String milestoneEditButton1) {

        String actual = "";

        int totalsize = milestoneListSize.size();

        for (int i = 1; i <= totalsize; i++) {

            actual = actual+driver.findElement(By.xpath(String.format(milestoneEditButton1, i))).getText();
        }

        System.out.println(actual);

    }

2:

@FindBy(xpath = "//kendo-grid-list//table/tbody/tr/td[9]//div/p")
List<WebElement> milestoneListSize;

String milestoneEditButton1 = "//uif-checklist-complex-group[%d]//uif-checklist-table/table/tbody/tr/td[6]//a";

public void clickMilestoneUser(String milestoneEditButton1) {

        String actual = "";

        int totalsize = milestoneListSize.size();

        for (int i = 1; i <= totalsize; i++) {

            actual = driver.findElement(By.xpath(String.format(milestoneEditButton1, i))).getText();
            System.out.println(actual);
        }

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM