Forum Discussion

sonya_m's avatar
sonya_m
SmartBear Alumni (Retired)
4 years ago
Solved

[TechCorner Challenge #8] Finding Elements on a Web Page

Hi TestComplete Community!   Today, I bring you a new TechCorner Challenge task 🙂   By completing the tasks, you will not only learn TestComplete features but also get into the TechCorner Le...
  • mkambham's avatar
    4 years ago

    Task: Create a TestComplete script that will go to the Leaderboard page, search for yourself (by your user name) and a user named tristaanogre in the table and, if this user is mentioned on the Leaderboard, post their score to the log.

     

    This is a solution created for [TechCorner Challenge #8]

     

    'The following Vb Script code can find the solution for Tech Corner Challenge #8.

     

    Sub LeaderBoardSearchDetails()
    
    Url = "https://community.smartbear.com/t5/TestComplete-General-Discussions/Leaderboard-and-Guide-to-Weekly-TestComplete-TechCorner/m-p/205075#M38161*"
    Call Browsers.Item(btChrome).Run(Url)
    
    set Page = Sys.Browser("chrome").Page("*")
    
    set TechCornerChallenge_BoardText = Page.FindChild("contentText", "Techcorner challenge Leaderbord", 1000)
    
    Sys.HighlightObject TechCornerChallenge_BoardText,2
    
    TechCornerChallenge_BoardTable = Page.FindAll("className", "techcornerleaderboard", 1000)
    
    'Sys.HighlightObject TechCornerChallenge_BoardTable(0),2
    
    ColumnName = Page.EvaluateXPath("//*[@id='bodyDisplay']/div/table/tbody/tr[1]/th", 1000)
    NoOfRows = Page.EvaluateXPath("//*[@id='bodyDisplay']/div/table/tbody/tr", 1000)
    If UBound(ColumnName)>0 And UBound(NoOfRows)>0 Then
    For i= LBound(ColumnName) to UBound(ColumnName)
    If ColumnName(i).contentText = "Participant" Then
    LeaderBoardParticipants = Page.EvaluateXPath("//*[@id='bodyDisplay']/div/table/tbody/tr/td[2]", 1000)
    Points = Page.EvaluateXPath("//*[@id='bodyDisplay']/div/table/tbody/tr/td[2]/following-sibling::td", 1000)
    For j=LBound(LeaderBoardParticipants) to UBound(LeaderBoardParticipants)
    ParticipantUser1 = "@mkambham"
    ParticipantUser2 = "@tristaanogre"
    
    
    If LeaderBoardParticipants(j).contentText = ParticipantUser1 Then
    User1Details = "Participant Id: "+LeaderBoardParticipants(j).contentText & " and Points: "+Points(j).contentText
    Log.Message User1Details
    End If
    If LeaderBoardParticipants(j).contentText = ParticipantUser2 Then
    UserDetails2 = "Participant Id: "+LeaderBoardParticipants(j).contentText & " and Points: "+Points(j).contentText
    Log.Message UserDetails2
    End If
    Next
    
    
    For j=LBound(LeaderBoardParticipants) to UBound(LeaderBoardParticipants)
    ParticipantWithDetails = "Participant Id: " & LeaderBoardParticipants(j).contentText & " and Points: "& Points(j).contentText & VbNewLine
    AllParticipantsWithDetails = AllParticipantsWithDetails + ParticipantWithDetails
    Next
    Log.Message "AllParticipants Details in Single Log..."
    Log.Message AllParticipantsWithDetails
    
    End If
    Next
    End If
    
    End Sub

     

     

  • prekar's avatar
    4 years ago

    Task: Create a TestComplete script that will go to the Leaderboard page, search for yourself (by your user name) and a user named tristaanogre in the table and, if this user is mentioned on the Leaderboard, post their score to the log.

     

    This is a solution created for [TechCorner Challenge #8]

     

    //JavaScript
    
    function test1(){
    Browsers.Item(btChrome).Run("https://community.smartbear.com/t5/TestComplete-General-Discussions/Leaderboard-and-Guide-to-Weekly-TestComplete-TechCorner/m-p/205075")
    var page = Sys.Browser("chrome").Page("*");
    let user1 = page.FindChildByXPath("//td/a[contains(text(),'prekar')]");
    let user2 = page.FindChildByXPath("//td/a[contains(text(),'tristaanogre')]");
    if ((user1 != null)||(user2 != null)){
    if (user1 != null){
    let point1 = page.FindChildByXPath("//td/a[contains(text(),'@tristaanogre')]/following::td[1]");
    Log.Message("User prekar points " + point1.textContent);
    }
    if(user2 != null){
    let point2 = page.FindChildByXPath("//td/a[contains(text(),'@tristaanogre')]/following::td[1]");
    Log.Message("User tristaanogre points " + point2.textContent);
    }
    }
    else
    Log.Message("Both the user not found")
    }
  • SiwarSayahi's avatar
    4 years ago

    Task: Create a TestComplete script that will go to the Leaderboard page, search for yourself (by your user name) and a user named tristaanogre in the table and, if this user is mentioned on the Leaderboard, post their score to the log.

     

    This is a solution created for [TechCorner Challenge #8]

     

    //JScript
    
    function PostTheScore()
    {
    
    //Open the user leaderboard page
    Browsers.Item(btChrome).Navigate("https://community.smartbear.com/t5/TestComplete-General-Discussions/Leaderboard-and-Guide-to-Weekly-TestComplete-TechCorner/m-p/205075#M38161");
    
    var Page = Sys.Browser().Page("*");
    
    //identify the leaderboard table
    
    var table = Page.QuerySelector('table.techcornerleaderboard');
    
    if (table.Exists)
    {
    // get the username of the connected session
    var userIcon = Page.QuerySelector("div.lia-quilt-row.lia-quilt-row-main-header img.lia-user-avatar-message").Click();
    Page.Wait();
    var myUserName = Page.QuerySelector('div.UserName a.lia-link-navigation.lia-page-link.lia-user-name-link');
    Page.QuerySelector("div.lia-quilt-row.lia-quilt-row-main-header img.lia-user-avatar-message").Click();
    
    
    if (myUserName.Exists)
    {
    // Search for my user (connected user) in the table
    props = ["ObjectType","contentText"];
    values = ["Cell", "@"+myUserName.ContentText];
    Mycell = table.FindChild(props, values, 20);
    
    if(Mycell.Exists)
    {
    // Display the score
    Log.Message("The score of my user "+ myUserName.ContentText+" is: "+table.cell(Mycell.RowIndex,2).innerText);
    }
    else
    {
    Log.Warning("My user is not found in the table of leaderboard");
    }
    
    }
    else
    {
    Log.Warning("No user is connected");
    }
    
    //Post the score of the participant tristaanogre
    // Search for the user in the table
    props = ["ObjectType","contentText"];
    values = ["Cell", "@tristaanogre"];
    CellP = table.FindChild(props, values, 20);
    
    if(CellP.Exists)
    {
    
    // Display the score
    Log.Message("The score of the user tristaanogre is: " +table.cell(CellP.RowIndex,2).innerText);
    }
    else
    {
    Log.Warning("The user tristaanogre is not found in the table of leaderboard");
    }
    
    }
    else
    Log.Warning("The table was not found");
    
    }