java
  • selenium-webdriver
  • 2016-12-06 120 views -2 likes 
    -2

    我想計算selenium(Java)中表的行數和列數。 我做了一些研究,所有我發現是使用XPath在selenium中使用Id獲取行數和列數

    雖然我的代碼在XPath下工作正常,但我想知道「是否可以使用Element Id來實現此目的?」

    編輯: Table HTML

    我的代碼(與工作正常,但使用XPath):

    List<WebElement> rows = driver.findElements(By.xpath(".//table[@id='ctl00_TxnContentPage_grdLoanDetails']/tbody/tr")); 
          System.out.println("Row count" + rows.size()); 
    

    讓我知道如果你需要任何具體細節。

    +0

    如果你有所有的行相同的ID和列有相同的ID,那麼你可以嘗試這種方法。無論如何,從應用程序的開發角度來看,這將是一個壞主意。 XPath更好。 – Abhinav

    +0

    按照我的觀點,所有行/列(在運行時動態生成)都有相同的ID是開發的良好實踐。 [糾正我,如果我錯了] – Ashish

    +0

    @Abhinav XPath永遠不會被認爲是更好的方式來查找元素,因爲它降低了自動化測試的性能。它總是用作替代品。 – Ashish

    回答

    0

    下面的代碼應該是更強大的

    WebElement table = driver.findElement(By.id("ctl00_TxnContentPage_grdLoanDetails")); 
    WebElement tableBody = table.findElement(By.tagName("tbody")); 
    int rowCount = tableBody.findElements(By.tagName("tr")).size(); 
    
    +0

    的確。它很健壯。 – Ashish

    +0

    這不是比你有什麼更強大。事實上,這是完全一樣的(結果明智的),但可能慢3倍,因爲你是三次而不是一次刮頁面。 – JeffC

    1

    你可以用CSS選擇器去。它會稍微快一點,但你必須自己測試才能看到更快的速度......我們可能會說100ms或更快的速度。

    List<WebElement> rows = driver.findElements(By.cssSelector("#ctl00_TxnContentPage_grdLoanDetails > tbody > tr")); 
    System.out.println("Row count" + rows.size()); 
    

    CSS選擇器幾乎總是會比其他任何定位速度更快,因爲瀏覽器進行了優化,使用它,因爲它是如此普遍。

    這確實使用了ID,因爲您可以在#ctl00_TxnContentPage_grdLoanDetails中看到,但它不是(明顯)使用By.id()

    +0

    感謝這個信息。 由於我的應用程序(銀行業務領域)主要涉及交易,所以我需要牢記業績。 – Ashish

    +0

    嗨,我很長時間以來一直關注你的工作。我是一位QA,他表示擔任主管,負責開發混合數據驅動銀行應用框架。我編寫了所有的測試,但我知道我沒有把它放在框架的方式。如果可能,請協助我這樣做。讓我知道你是否需要任何細節(我無處可以聯繫你,所以我在這裏評論)。 – Ashish

    +0

    你最好的選擇是閱讀大量的文章並嘗試一些東西。看看有什麼作用,並改善沒有。如果遇到編碼問題,請在這裏發佈問題,也許我會看到它。您可以嘗試一些其他SE網站,例如編程或測試相關網站,您可以在其中詢問更多建議類型的問題。 – JeffC

    相關問題