you never disappoints,you always gives great content.you probably comes up with all the questions about this environments.very clear and informative.keep inspiring us...
I think you addressed all possible questions that might arise who are looking to execute their test cases in multiple environments, Thanks for the tutorial
Thanks you so so much for you informational videos on playwright. It really helped me in implementing the framework for my new project. I appreciate your efforts.
Worth noting that you can have a default environment in your global config: const test_env = process.env.test_env || "test" if (test_env) { dotenv.config({ path: `.env.${test_env}`, override: true }) }
compile time issue as env variable may come as string or undefined where as your method accept only string, to fix you can pass or condition with some string value. const BASE_URL = process.env.BASEURL || "some default value or empty string" or also add //@ts-ignore above the line of code in test
Hi @Letcode with Koushik , your videos are really helpful , I have learned a lot from your videos. It would be really great if you could prepare a session on sorting verification of web tables in playwright. Your help will really be appreciated. Thanks 😊
Thank You Koushik. Could you please add a video to perform the same multiple environment settings using Javascript? I tried but I am getting undefined error or object returned while string is expected error.
OKAY , so for everyone who's got error and failed running their tests 1. in your test.spec file, to make BASE_URL not undefined, simply . It should work 2. Should use GIT BASH 3. When running the script, if you don't specify command in under script{} , you can simply type in , or set command script in package.json say you name it "mycommand" : then when running in gitbash, type in
@@letcode no, your tutorial's very understandable. I just missed the item #3 above. I forgot earlier in the video you set script{} test in config.json. So I ran immediately thinking that word "test" in npm test is built-in word
Great tutorial! On the other hand, I tried to debug my tests using the Playwright Test for VSCode but it fails (it seems that it doesn't recognize the setup you suggest in your video. For some reason the env variables are null or "empty"). If I run the tests in the traditional way (through the CLI), it works.
Very helpful video Sir, Thanks a lot.🙏 I just have one query is there any other way to setup the environment?? For example instead of .env file, i can create a .ts file and define all the env related details in that and then use it another file and at run time as the per environment passed the execution will be done. If yes is there any video you have created for the same.🙏
Hi Koushik, My scenario is test 1 having login and assertion then after test 2 has continue in same page navigate and create user But test 1 it closes browser NO login is available
Thank Koushik for great work and share! Folow your instructions I can run test multiple environments file from command line but when I run test by clicking the Green Triagle button, it can not pass the correct value from environment file? Could youd pls help me on that, thank you and have a nice day!
Hello a small doubt followed this process step to step. When give the command to run directly from terminal it is failing with this error "is not recognized as the name of a cmdlet" but when passed through package.json it is working just wanted to know what could be the reason....thank you
nice series!! I have one more question. I understand that i have to use git bash terminal for this: test_env=stage npm run reg but if i want to run in azure devops pipeline with env variable from azure it will work?
can you show a method into the global setup if test_nv=stage use a state and test_env=uat use another state for example if ( test_env == "stage" ) { storageState: STAGE_STATE, }els{ storageState: UAT_STATE }
Thank you for your videos with detailed explanation. Appreciate that was very helpful when I was starting off with Playwright. Is there any other way we can do this avoiding use of multiple env files (this is because I have a big list of URLs I need to run against diff tests every release and dont want to endup creating like 10 .env files). Can we use the projects: [ ] feature of config file, to setup different testDirs, URLs and act accordingly to the current Project running? or Can you pls show how to add multiple config files and work with them or point me to an appropriate doc? Thanks a lot!!
Hi! I have configured global setup. Could you please advise how to run test from 'Testing' in VS? It does not know about 'test_env' so BASE_URL is underfined.
Hi @@letcode Thank you for the video. I managed to solve the issue by setting env variable in terminal and run Visual code from terminal. Then when tests are run by 'Testing' in VS or Playwright UI mode( npx playwright test --ui), they use my env variable.
HI I have configured multiple env setup as per video. but when i run script it is throwing below errors as page.goto: url: expected string, got undefined
what if you already have an browser stack existing global setup file with different configs, how can I add this to the existing global setup file? Thank you!
Hi koushik! Good explanation. thank you! could you please cover the Excel reading and writing using playwright PDF reading and comparing the pdf and web page values
what is the syntext for scroll bar in playwright i am using this but is not working page.mouse.move(0, 0); page.mouse.move(0, 100); page.mouse.move(0, 0); page.mouse.up()
Hi Kaushik, Thanks for this tutorial. Its very helpful. We run our Playwright tests on multiple integration environments. We are currently integrating our tests with CI now. Do you have a tutorial on how to run PlayWright tests on multiple environments from Jenkins where users can enter the environment name as a parameter in Jenkins?
Hi @Letcode with Koushik, when i run the script with "npx playwright test" command, it gives me the variables are undefined. Any solution? where else when I run using "npm run env:test" it works fine.
Hi, I tried to include loading ENV file and loggedstate.json in the same method, I am facing issue like TypeError: Cannot read properties of undefined (reading 'page'). If we try to load env file using class constructor, getting below error. Error: utils\ui_globalSetup.ts: file must export a single function. Can you help to fix it? import dotenv from "dotenv"; import { environment } from "./env"; import { chromium } from "@playwright/test"; import LoginPage from "../pages/Login.page"; let loginPage: LoginPage; async function globalSetup() { if (process.env.test_env) { dotenv.config({ path: `.env.${process.env.test_env}`, override: true }) } const browser = await chromium.launch(); const page = await browser.newPage(); loginPage = new LoginPage(page); const baseURL = `${environment.UI_BASE_URL}`; const userName = `${environment.UI_USER_NAME}`; const password = `${environment.UI_PASSWORD}`; console.log(baseURL); console.log(userName); console.log(password); // Login await page.goto(baseURL); await loginPage.verifyTitle(); await loginPage.enterUserName(userName); await loginPage.enterPassword(password); await loginPage.clickSignIn(); await loginPage.enterSecurityAnswer(); await loginPage.verifyBtn.click(); // Save Signed-In State to loggedInState.json await page.context().storageState({ path: 'loggedInState.json' }); await browser.close(); } export default globalSetup;
@@letcodeyes, it is fixed. We need to use process.env.BaseURL directly as environment variables from other classes didn’t read properly. loggedinstate.json is generated but I am unable to use it. My tests are still redirected to login screen. We are using Okta token validation for login. Please let me know if you are aware of how to handle okta validation in login state. Dev team is storing access token in local storage.
Thanks For The video, it is really help full. Just want to know that, the same process we have to follow for POM framework ? because I am unable to read the values from .env file, I have created the POM framework, from your music video. There it didn't work. getting error " locator.fill: value: expected string, got undefined" It will be really helpful, if you can provide some input. Thanks 🙂
i am getting this error in the GLobal Setup part please help: test_env=staging : The term 'test_env=staging' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. At line:1 char:1
@@letcode thanks man i am able to execute the command in git bash terminal without the error but it does not seem to read the .env files do you have an idea why? here is my globalSetup.ts import { FullConfig } from "@playwright/test"; import dotenv from "dotenv" async function globalSetup(config: FullConfig) { if(process.env.test_env) {
Thanks Koushik, All your videos are really helpful, you are doing wonders for the testing community :) Regarding this video it worked well in my local but the same thing when integrated with Github actions fails to ready BASE_URL value defined in .env file. Its says undefined... Can you please help ?
Thanks, pls confirm whether the npm command used in local to execute is also used in github action yml file? is the env files are committed to the branch?
Hey Koushik, Hope you are doing good! I am unable to pass values to parameters from command line. Below is my setup. Please, could you throw some light on this? My package.json -> script : "smokeTest":"cross-env ENV=$ENV APP=$APP BROWSER=$BROWSER cucumber-js --config=config/cucumber.js --tags @smokeTest" when i try to run "$ENV=dev1 $APP=dev1 $BROWSER=chrome npm run smokeTest" ,i am not getting the parameters passed.
Hi Kaushik, I have defined value of a select box in .env file as COUNTRY=GB and in the script i have written await page.locator('').selectOption(process.env.COUNTRY); But it can identify value from the .env file got expected object, got unidentified error can you please help me here what is wrong I am doing here?
@@letcode 1. First I have run npm install dotenv --save 2. next it got added as dependencies in package.json file 3.next create an ,env file and define the variables 4. add line in the playwright.config file as require('dotenv').config() 5. after that calling the variables in the script Is there any step that need to do, to set .env in global setup? Please suggest
Hey Koushik, I followed the exact steps but every time I'm getting the "process.env.USER_NAME" as undefined in the console... basically, all the .env variables are showing as Undefined.
you never disappoints,you always gives great content.you probably comes up with all the questions about this environments.very clear and informative.keep inspiring us...
Thanks ❤️
I think you addressed all possible questions that might arise who are looking to execute their test cases in multiple environments, Thanks for the tutorial
Thanks 🙏
Hi bro.. Following ur channel for a month and learned selenium java it helped me a lot and now I got a job. Thanks to u and ur videos bro!!
Congratulations Sathya 🎉
@@letcode thank u bro🙏
4:53 Now I know how to run tests by scripts, thank you so much!
Great 👍
Thanks you so so much for you informational videos on playwright. It really helped me in implementing the framework for my new project. I appreciate your efforts.
Great to hear!
Дуже дякую! Допоміг!)) 😀
Happy learning 😃
These videos are Awesome. Incredible job
Glad you like them!
Worth noting that you can have a default environment in your global config:
const test_env = process.env.test_env || "test"
if (test_env) {
dotenv.config({
path: `.env.${test_env}`,
override: true
})
}
Thank you . Can you also please share how can we use this in global set up file?
Awesome tutorial
Thanks buddy 😌
Hi kaushik sir, if we pass 'as string' with url then there is no typescript error.
Ex. await page.goto(ENV.BASE_URL as string)
Great 👍
compile time issue as env variable may come as string or undefined where as your method accept only string, to fix you can pass or condition with some string value.
const BASE_URL = process.env.BASEURL || "some default value or empty string"
or also add //@ts-ignore above the line of code in test
Yeah, i have a fix for this. Better way is to use the decorators that will also help to get the snippet suggestions
@@letcode i am still facing the issue. it says undefined. url is not picked up
Anyone pls help me with the solution.i am getting undefined in terminal.its not picking BASE_URL
I believe you are using git bash else the way we set is going to differ.
Pls read other comments to figure it out or send a screenshot to the discord.
Hi @Letcode with Koushik , your videos are really helpful , I have learned a lot from your videos.
It would be really great if you could prepare a session on sorting verification of web tables in playwright.
Your help will really be appreciated.
Thanks 😊
Hi, yeah sure I'll do that.
Plz cover how to run playwright test against a browser in a docker container thru open agent, Thankyou!
Nice one
Thanks 👍
Thank You Koushik. Could you please add a video to perform the same multiple environment settings using Javascript? I tried but I am getting undefined error or object returned while string is expected error.
You can share the screenshot in our discord, js and TS both code is the same.
Thanks bro😊
Welcome 😊
OKAY , so for everyone who's got error and failed running their tests
1. in your test.spec file, to make BASE_URL not undefined, simply . It should work
2. Should use GIT BASH
3. When running the script, if you don't specify command in under script{} , you can simply type in , or set command script in package.json say you name it "mycommand" : then when running in gitbash, type in
Did I fail to make it simpler and easy to understand ? 😕
@@letcode no, your tutorial's very understandable. I just missed the item #3 above. I forgot earlier in the video you set script{} test in config.json. So I ran immediately thinking that word "test" in npm test is built-in word
Glad. I appreciate your comment, I just asked for my self improvement so that I can deliver with more better clarity.
Thanks 👍
@@letcode so when we setup and run in Jenkins, is it gonna look for the script{} commands under package.json file?
@user-dy3pt9ej3m yes
Hey dude, @LetCode with Koushik execellent stuff! very helpful! would be doing a docker setup video? not a lot of info re this
Thank you 😊.
Circle CI with docker integration coming soon.
Great tutorial! On the other hand, I tried to debug my tests using the Playwright Test for VSCode but it fails (it seems that it doesn't recognize the setup you suggest in your video. For some reason the env variables are null or "empty"). If I run the tests in the traditional way (through the CLI), it works.
Hi, yes because the playwright vs cod extension doesn't check for env variable.
@@letcode Is there a way to read them, but still following your solution?
facing same issue, even for me above env files set-up is not working, it prints "undefined", did you figure out how it worked for u ?
Very helpful video Sir, Thanks a lot.🙏
I just have one query is there any other way to setup the environment?? For example instead of .env file, i can create a .ts file and define all the env related details in that and then use it another file and at run time as the per environment passed the execution will be done.
If yes is there any video you have created for the same.🙏
Thanks.
As the variables should be passed from the terminal, either. Env files been be used or process.node can be used.
ua-cam.com/video/-WM0Qzaw4zg/v-deo.htmlsi=1rfhPNCKNVjYy80C
Hi Koushik,
I have faved issues like
0 Scenarios
0 Steps
0m00.003s (executing steps: 0m00.000s)
Hi, using cucumber or playwright test runner?
Dynamic xpath tamil video podunga bro..ancestor, following,preceding,preceding-sibling,child,parent, dependant..oru clear video podunga pls
Hi Koushik, My scenario is test 1 having login and assertion then after test 2 has continue in same page navigate and create user But test 1 it closes browser NO login is available
Within test you use multiple step functions.
Test always run in individual browser.
Thanks cool video, could you record a video, how to use eslint with playwright ?
Sure thing!
Thank Koushik for great work and share!
Folow your instructions I can run test multiple environments file from command line
but when I run test by clicking the Green Triagle button, it can not pass the correct value from environment file?
Could youd pls help me on that, thank you and have a nice day!
I don't think it will work with the Playwright extension.
Hi kaushik, I followed all the steps but while running it is giving undefined for all the values, could you please help
Did u include the global setup on config file.
Pls go through all the steps it must work.
Hello a small doubt followed this process step to step. When give the command to run directly from terminal it is failing with this error "is not recognized as the name of a cmdlet" but when passed through package.json it is working just wanted to know what could be the reason....thank you
Hi, what is the command you have passed?
@@letcode cross-env test_env=qa npm test, qa is my env
Hi @LetCode with Koushik your tutorials are very helpful, thanks for that. Is there a chance to create such series but with JavaScript?
I prefer typescript but concept wise both are the same.
@@letcode I am not able to implement this with JS, Any solution with which you can help?
To handle multiple env it is the same as TS, no changes required.
What is the issue u r facing?
@@rishabhaggarwal312 : Have you found any solution with JS as i am getting undefined.
@@srikanthpotipareddy4288 same undefined error. were you able to fix this?
nice series!!
I have one more question. I understand that i have to use git bash terminal for this: test_env=stage npm run reg
but if i want to run in azure devops pipeline with env variable from azure it will work?
Use gitbash terminal.
can you show a method into the global setup
if test_nv=stage use a state and test_env=uat use another state for example
if ( test_env == "stage" )
{
storageState: STAGE_STATE,
}els{
storageState: UAT_STATE
}
Coming soon
@@letcode fantastic :)
Thank you for your videos with detailed explanation. Appreciate that was very helpful when I was starting off with Playwright.
Is there any other way we can do this avoiding use of multiple env files (this is because I have a big list of URLs I need to run against diff tests every release and dont want to endup creating like 10 .env files). Can we use the projects: [ ] feature of config file, to setup different testDirs, URLs and act accordingly to the current Project running? or Can you pls show how to add multiple config files and work with them or point me to an appropriate doc? Thanks a lot!!
Yeah you can use multiple config file if that fits your requirement.
npx playwright test --config=tests/my.config.js
Hi Koushik,
I'm facing Error: page.goto: url: expected string, got undefined when running "npm run env:prod" command
Is the url passed correctly?
@@letcode I have created .env file inside ENV folder, After moved .env files to out of the folder, the code working fine.
@@anandanand-d9j great 👍
Hi! I have configured global setup. Could you please advise how to run test from 'Testing' in VS? It does not know about 'test_env' so BASE_URL is underfined.
Use gitbash as a terminal.
I have explained how to run also, pls watch again.
Hi @@letcode Thank you for the video.
I managed to solve the issue by setting env variable in terminal and run Visual code from terminal. Then when tests are run by 'Testing' in VS or Playwright UI mode( npx playwright test --ui), they use my env variable.
Nice, thanks for the update
HI I have configured multiple env setup as per video. but when i run script it is throwing below errors as page.goto: url: expected string, got undefined
It should work if all steps followed correctly
Where is your video on Data providers? I see you have a file there but I couldnt find anything when I searched
ua-cam.com/video/CzQm-mVl4Hg/v-deo.html
what if you already have an browser stack existing global setup file with different configs, how can I add this to the existing global setup file? Thank you!
You can modify the existing file..
Any issue?
Hello Koushik
NIce Explanation. Thank you.
test_env which we pass from command/config file, where is it defined? it is in the system env variable?
No it's custom one, to set in the node.
@@letcode sorry did I miss that setting in this vedio?
If you don't mind can u explain how to set. Thank u
@@arutchelvana33 from node you have to declare that's it bro ,
Eg.
Test_env=test npm test
Hi koushik!
Good explanation.
thank you!
could you please cover the Excel reading and writing using playwright
PDF reading and comparing the pdf and web page values
Hi, ok I'll check.
@@letcode much appreciated thank you
what is the syntext for scroll bar in playwright i am using this but is not working
page.mouse.move(0, 0);
page.mouse.move(0, 100);
page.mouse.move(0, 0);
page.mouse.up()
Is there any approaches to scroll up & Down
You can use the scroll into view function,
how we can check variables of process.env from global config? and how I can add other variables in process.env in global config ?
Simply you can use process.env.variablename and pass the variable along with value in the terminal
Hi Kaushik, Thanks for this tutorial. Its very helpful. We run our Playwright tests on multiple integration environments. We are currently integrating our tests with CI now. Do you have a tutorial on how to run PlayWright tests on multiple environments from Jenkins where users can enter the environment name as a parameter in Jenkins?
Hi, not yet, I'll try to make a video.
@@letcode Thanks Kaushik. That would be very helpful!
Hi @Letcode with Koushik, when i run the script with "npx playwright test" command, it gives me the variables are undefined. Any solution? where else when I run using "npm run env:test" it works fine.
Did u follow all the steps shown in the video? You have to run npm commands
Hi, I tried to include loading ENV file and loggedstate.json in the same method, I am facing issue like TypeError: Cannot read properties of undefined (reading 'page').
If we try to load env file using class constructor, getting below error.
Error: utils\ui_globalSetup.ts: file must export a single function.
Can you help to fix it?
import dotenv from "dotenv";
import { environment } from "./env";
import { chromium } from "@playwright/test";
import LoginPage from "../pages/Login.page";
let loginPage: LoginPage;
async function globalSetup() {
if (process.env.test_env) {
dotenv.config({
path: `.env.${process.env.test_env}`,
override: true
})
}
const browser = await chromium.launch();
const page = await browser.newPage();
loginPage = new LoginPage(page);
const baseURL = `${environment.UI_BASE_URL}`;
const userName = `${environment.UI_USER_NAME}`;
const password = `${environment.UI_PASSWORD}`;
console.log(baseURL);
console.log(userName);
console.log(password);
// Login
await page.goto(baseURL);
await loginPage.verifyTitle();
await loginPage.enterUserName(userName);
await loginPage.enterPassword(password);
await loginPage.clickSignIn();
await loginPage.enterSecurityAnswer();
await loginPage.verifyBtn.click();
// Save Signed-In State to loggedInState.json
await page.context().storageState({ path: 'loggedInState.json' });
await browser.close();
}
export default globalSetup;
Is it fixed ?
@@letcodeyes, it is fixed. We need to use process.env.BaseURL directly as environment variables from other classes didn’t read properly.
loggedinstate.json is generated but I am unable to use it. My tests are still redirected to login screen. We are using Okta token validation for login.
Please let me know if you are aware of how to handle okta validation in login state. Dev team is storing access token in local storage.
Thanks For The video, it is really help full.
Just want to know that, the same process we have to follow for POM framework ?
because I am unable to read the values from .env file, I have created the POM framework, from your music video.
There it didn't work. getting error " locator.fill: value: expected string, got undefined"
It will be really helpful, if you can provide some input.
Thanks 🙂
Did u set the env value in terminal?
@@letcode Yes, test_env=test npm test
Maybe u can check this video, Here I have used the same concept.
ua-cam.com/video/lIElnQJy7pU/v-deo.html
@@letcode Thank You !!🙂
I will check and update you.
Please let us know how to hook this code with gh actions
I have to check, the basic concept is if the GitHub action supports parameters then we can achieve this.
@@letcode thank you appreciate if you can share some insights about it
i am getting this error in the GLobal Setup part please help:
test_env=staging : The term 'test_env=staging' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was
included, verify that the path is correct and try again.
At line:1 char:1
Pls use git bash terminal
@@letcode thanks man i am able to execute the command in git bash terminal without the error
but it does not seem to read the .env files do you have an idea why?
here is my globalSetup.ts
import { FullConfig } from "@playwright/test";
import dotenv from "dotenv"
async function globalSetup(config: FullConfig) {
if(process.env.test_env) {
dotenv.config({
path:'.env.${process.env.test_env}',
override:true
})
}
}
export default globalSetup;
I am getting the error
url: expected string, got undefined
10 |
> 11 | await page.goto(ENV.BASE_URL);
Did u use the global config within the playwright config file.
@@letcode yes i did that as well
Please provide the same tutorial for JavaScript
Not much difference, save the file as js it should work.
Only the export and import syntax will change
Thanks Koushik, All your videos are really helpful, you are doing wonders for the testing community :) Regarding this video it worked well in my local but the same thing when integrated with Github actions fails to ready BASE_URL value defined in .env file. Its says undefined... Can you please help ?
Thanks, pls confirm whether the npm command used in local to execute is also used in github action yml file?
is the env files are committed to the branch?
@@letcode yes Koushik, it's the same npm run ctest
Where ctest is cross-env test_env=envName playwright test --project=chromium
Same thing will work using javascript?
Yes it should work
Kindly upload the same concept using page object pattern
@@kidvikvlogs it will be very same. Try and let me know if any issues there.
@@letcode in page object for particular java file i placed my url method .there what should I need to pass .calling this action from test file
command not found.
Lookout for other comments, you'll get the solution
Hey Koushik,
Hope you are doing good! I am unable to pass values to parameters from command line. Below is my setup. Please, could you throw some light on this?
My package.json -> script : "smokeTest":"cross-env ENV=$ENV APP=$APP BROWSER=$BROWSER cucumber-js --config=config/cucumber.js --tags @smokeTest"
when i try to run "$ENV=dev1 $APP=dev1 $BROWSER=chrome npm run smokeTest" ,i am not getting the parameters passed.
Pls use githbash terminal
Hi Kaushik, I have defined value of a select box in .env file as COUNTRY=GB and in the script i have written await page.locator('').selectOption(process.env.COUNTRY);
But it can identify value from the .env file got expected object, got unidentified error
can you please help me here what is wrong I am doing here?
*it cannot identify the select box value from the .env file
Did u set the path correctly using dotenv.config ?
@@letcode in playwright.config file I have added require('dotenv').config()
statement
Not in the config file, it should be in the file where u r calling env . Country or it should be in the global setup
@@letcode
1. First I have run npm install dotenv --save
2. next it got added as dependencies in package.json file
3.next create an ,env file and define the variables
4. add line in the playwright.config file as require('dotenv').config()
5. after that calling the variables in the script
Is there any step that need to do, to set .env in global setup? Please suggest
I downloaded your framework and looks like it does not work
It should work if u have downloaded the latest code.
Can u also what is not working?
@@letcode Another issue that I see is that only form.test.ts file is displayed in the test explorer. test.ts is not displayed in Test Explorer
@@letcode unfortunately, the project does not work
Ok, you have to learn playwright, only framework will not help u
Hey Koushik, I followed the exact steps but every time I'm getting the "process.env.USER_NAME" as undefined in the console... basically, all the .env variables are showing as Undefined.
No other configurations.
Make sure u have followed all the steps.
Global setup, package.json.
@@letcode yeah, did the same
This video has a simple demo, can u try with this ua-cam.com/video/lIElnQJy7pU/v-deo.html
I followed the exact same thing but im getting page.goto: url: expected string, got undefined
Definitely you would have missed something or you might not be using the git bash terminal.
Yes , I was using default pwsl terminal. Thanks! With git bash terminal it works fine!
Dynamic xpath tamil video podunga bro..ancestor, following,preceding,preceding-sibling,child,parent, dependant..oru clear video podunga pls
Dynamic xpath tamil video podunga bro..ancestor, following,preceding,preceding-sibling,child,parent, dependant..oru clear video podunga pls
Dynamic xpath tamil video podunga bro..ancestor, following,preceding,preceding-sibling,child,parent, dependant..oru clear video podunga pls
English la 45 mins video potu erukan bro,
Adhu parunga purila nah tamil la poduran
ua-cam.com/video/ppnDfNuSjro/v-deo.html
Dynamic xpath tamil video podunga bro..ancestor, following,preceding,preceding-sibling,child,parent, dependant..oru clear video podunga pls