[TechCorner Challenge #8] Finding Elements on a Web Page
SOLVED- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
[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 Leaderboard.
Today we will use the Leaderboard table itself to sharpen your skills! Letβs use TestComplete to find out if a user is on the table and how many points they gained so far!
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.
Can you compete with people in the Leaderboard?π
Difficulty:
Tip: You can use FindChild or FindElement in your script.
Note: You will need a Web Module to fulfill this task.
Good luck!
Sonya Mihaljova
Community and Education Specialist
Solved! Go to Solution.
- Labels:
-
Scripting
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Excellent
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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")
}
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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");
}
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Wow... I'm honored that I'm a subject of a techcorner challenge. π
Robert Martin
[Hall of Fame]
Please consider giving a Kudo if I write good stuff
----
Why automate? I do automated testing because there's only so much a human being can do and remain healthy. Sleep is a requirement. So, while people sleep, automation that I create does what I've described above in order to make sure that nothing gets past the final defense of the testing group.
I love good food, good books, good friends, and good fun.
Mysterious Gremlin Master
Vegas Thrill Rider
Extensions available
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@mkambham Thank you for your script! Posting all the leaderboard scores to the log is a nice touch!
@prekar Great job! A short and sweet script!
@SiwarSayahi Thank you! Dynamically obtaining the name of the current user is a very interesting solution.
A message to all participants - we have a great feature that can help you make your code look even better and more readable - expand the toolbar when writing a new comment and use Insert/Edit code sample to insert your code. You can choose the language there, too, for the correct syntax highlighting!
Sonya Mihaljova
Community and Education Specialist
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @tristaanogre !
You are a celebrity on our forums, it was only natural to use your nickname π
Sonya Mihaljova
Community and Education Specialist
