Handle Dynamic Google Search Using Dynamic XPath - WebDriver Session - 15
HTML-код
- Опубликовано: 11 сен 2024
- Handle Dynamic Search Using Dynamic XPath - Google Search:
Steps:
1. Google Search - pick a value from suggestions
2. Search using Xpath
3. Get the total count of suggestions
4. Use if condition to match the value
5. Click on matched value
===========================================
Subscribe to this channel, and press bell icon to get some interesting videos on Selenium and Automation:
/ naveenautomationlabs
Follow me on my Facebook Page:
/ naveenqtpexpert
~-~~-~~~-~~-~
Follow my Site/Blog: www.naveenautom...
========================================================
Please watch: "Selenium & Automation Interview Preparation - By Naveen AutomationLabs"
• Selenium & Automation ...
~-~~-~~~-~~-~ Subscribe to this channel, and press bell icon to get some interesting videos on Selenium and Automation:
www.youtube.co...
Follow me on my Facebook Page:
/ naveenqtpexpert
Let's join our Automation community for some amazing knowledge sharing and group discussion on Telegram:
t.me/joinchat/...
Paid courses (Recorded) videos:
Java & Selenium Course: www.naveenautom...
API Course: www.naveenautom... ➡️Get Our Courses✔️
📗 Get My Paid Courses at
Paid courses (Recorded) videos:
Java & Selenium Course: www.naveenautom...
API Course: www.naveenautom...
-------------------------------
✔️SOCIAL NETWORKS
Facebook: / naveenqtpexpert
Twitter: / naveenkhunteta
Blog: www.naveenautom...
--------------------------------
Support My Channel✔️Or Buy Me A Coffee
Paypal: paypal.me/nave...
Google Pay: naveenanimation20@gmail.com
--------------------------------
✔️Thanks for watching!
देखने के लिए धन्यवाद
Благодаря за гледането
感谢您观看
Merci d'avoir regardé
Grazie per la visione
Gracias por ver
شكرا للمشاهدة
Dude, you freakn rock. keep continuing to help aspiring us to become proficient in Selenium!
During Coaching my Selenium, my Guru said this program. After see this video I recall that class memory. Thanq @naveen
this video made my morning :) Very informative and "wowww" video.. Thank you so much Naveen... we all are blessed to have you as our guide....
Thanks Naveen for such wonderful explanation. I love to watch your videos. Your teaching method is very interesting.
It's an amazing session to generate customised Xpath.
hi naveen sir.. really u have great knowledge and ur spreading ur knowledge with all..Thank u so much sir...
Hi Naveen, Amazing explanation always............We all appreciate your efforts.
Thank you.
I am learning very much from your videos and day by day my concepts are getting cleared.thank you so much for point to point explanation and hates of for your great efforts.
Hates??
Thanks a lot Naveen. Very good topic you have covered. Keep it up😊
Naveen thanks you are excellent skills in automation testing
Excellent bro, what an explanation. Interesting and Understanding.
Thanks, it is so detailed and covering all points.
I am watching your selenium videos.and believe me I'm becoming too good in selenium day by day. Your videos are very clear, concise and to the point. And these days, I'm attending interviews.
I have couple of doubts. Please help me to clear.
1. Why I always need to launch new browser every-time when I run selenium code. Why I won't run the selenium code in the same browser in which which I am currently working with my stuffs.
--->Is there any method to do the same? Then please make a video tutorial to explain.
2. Is there any method to fetch our the list of navigated browser history?
Waiting for your reply.And Thank you so much for such amazing and cost free content
Naveen how did u selected the whole box before inspecting, i m sorry i cant do that like i search testing and the options came in the box i can nor select the whole box thats y i cant inspect. Can someone help here, sorry m still learning.
Great Explanation...
Hi Sir , very nice video andinformative I am new to selenium learning through your video are clearing my doubts in much better way . can you please explain more for descendant in which scenarios we use descendant in xpath .
Thank you, very interesting.
Thank you very much very useful
hello naveen this code is not working can you please give me the Xpath (i am unable to find proper class for xpath) and i tried with sbct and sbtc both ..
Naveen, your tutorials are very helpful. Thank you very much
Thanks for watching :)
Very good appreciate your knowledge..
643(Sept 24, 2017) ---> 275K (June 22, 2022) Magic of compounding. Thanks for the video.
Really appreciable, Amazing explanation
Thank you sir
thanks, Naveen.
Excellent explanation. Thanks a lot.
Hi naveen awesome explanation thank you
really good concept.
Thank You, Sir!
Thank you so much Naveen ❤️
Hi Naveen, I have tried the tutoria, my doubt:
Here is the WebElement
testing
openings in chennai
In the above Webelement i am trying to use the code in Selenium
Code in selenium:
List list = driver.findElements(By.xpath("//ul[@role='listbox']//li/descendant::div[@class='wM6W7d']"));
System.out.println("Total number of suggestions in search box:" + list.size());
Output:
Total number of suggestions in search box:0
It is showing me 0 count but in chrome i can see 10 count.
can you tell me whether my Custom Xpath is wrong ?
Hi bro did you get your answer. I am also facing same issues. If you could help me it would be great.
Thanks naveen for your videose they are very helpfull can u please make a video for CSS (Element locator) separate one with examples.
Explaining in such a lucid way ... great, thanks !!! keep making us learn which will finally makes us earn too.. :P
I like ur video bcz u r telling real time scenario very nicee i want to talk with u o want to learn many things please help me
This is superb..this is what exactly I was looking for. Your explanation is very clear and simple.. Thank you.
@naveen tutorial is great but just one quick question I am getting a after div where we select a particular choice out of suggestion list.. i guess due to that my dynamic xpath is not working ... is there any solution to it??
due that my code is also not working
Guys did resolve the error? Am also facing similar issue
Yes same issue for me also any possible solution for this
Super Naveen Sir....
Thanks man, it worked for me!
Hi Naveen,
This is the exception i m getting while clicking on the second search bar on google.com
Steps of my program:
---------------------------------------------
search for java on google home page search bar
choose java programs from suggestion and click
click on searchbar
choose java programs pdf from suggestion
Exception in thread "main" org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document
(Session info: chrome=64.0.3282.119)
(Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 10.0.16299 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
For documentation on this error, please visit: seleniumhq.org/exceptions/stale_element_reference.html
Build info: version: '3.8.1', revision: '6e95a6684b', time: '2017-12-01T19:05:32.194Z'
System info: host: 'F208', ip: '10.10.20.33', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_152'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptSslCerts: true, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 2.33.506120 (e3e53437346286..., userDataDir: C:\Users\Sneha\AppData\Loca...}, cssSelectorsEnabled: true, databaseEnabled: false, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, rotatable: false, setWindowRect: true, takesHeapSnapshot: true, takesScreenshot: true, unexpectedAlertBehaviour: , unhandledPromptBehavior: , version: 64.0.3282.119, webStorageEnabled: true}
Session ID: eac8002bf441e6d54cccf3be5664de73
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80)
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:164)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:279)
at org.openqa.selenium.remote.RemoteWebElement.getText(RemoteWebElement.java:160)
at co.edureka.selenium.webdriver.basic.GoogleSearchTestExampleWithDynamicXpath.searchJavaInGoogle(GoogleSearchTestExampleWithDynamicXpath.java:50)
at co.edureka.selenium.webdriver.basic.GoogleSearchTestExampleWithDynamicXpath.main(GoogleSearchTestExampleWithDynamicXpath.java:61)
please help me where did i went wrong i am not able to find the solution for this. Tried keeping static wait but still the exception remains same
Hi naveen sir,
I am using tha same code which ur explaining but still I am getting 0 elements as length.
Do i need to use explicit wait before the code ??
Please help me out!!
iam also facing the same error
Hi Kanishka, Implicit time lo, then code will run correctly.
Hi Kanishka... I was facing the same issue. try by adding the following code
Thread.sleep(1000);
before fetching the suggestion list. Thanks.
Great Explanation!!!
Good Explanation 👌👌
Very useful tutorial, thank you!
Thank you sir. the video is very helpful
Hi Naveen
I want to ask one question..is there any option to do automation for canvas application ?
very good explanation
Hi Naveen, using find elements I am trying to do as you have shown in the video but on the web page I have 11 suggestions but when I am printing it's coming 1, checked the XPath it's correct. Can you please help me with this?
Thanks.
Sir , You have to put Explicit wait before listing the web element . because some time it gives count 0 , when we put the wait for that it always gives the right count .
you just saved my day..i just had to implement a wait condition and it worked like a charm.
Thanyou Manas Sir, now its working by taking implicit time.
at the last of div, if we have span , like the search value is show as testing , in this case what to do , what is the xpath syntax....
useful . thanks for sharing
Thanks
Hi Naveen.My auto suggestion is coming like searchbar in the left when running the script. Xpath and all are correct but due to this I am getting count as 0. while in original chrome it is giving auto suggestion not like this. Kindly solve this doubt
Thanks 😃.
Great explanation
Instead of using descendant if we use li// div then also it will take the child div. right?
tq Naveen
Awesome
Hi Naveen,
There is an issue ---it is printing all suggestion if we are not clicking any element but if we are clicking any element then it is printing uptill that element only and rest of the suggested element are not printed.
------------
Starting ChromeDriver 2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f) on port 22951
Only local connections are allowed.
Dec 30, 2017 6:39:09 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
*Total No. of sugggestion in Google search box::==>10*
java
javatpoint
javascript
java tutorial
plz suggest!!
are you using break in if condition?
yes i am using break statement in if condition
*for(int i=0;i
do you guys have code snippet on how to get the total number of autosuggestion using selenium python? Thanks
Hi Naveen, I have tried this multiple time but getting size 0. In the browser I am getting the size means able to inspect the element. Could anyone help me on this.
Hi Naveen, I wrote code for the google search but I am getting the error as an invalid selector. Now in the HTML code, inside tag there is a tag but does not have attribute then how to write that inside XPath if the attribute is not present.
hey,
Im also facing the same problem .
Please help..
its urgent..!!
Great
in my project i lot of autocomplete text box, all the options are in div tags , i have used same which you explained in the video it is clicking third element even though i change the test of contains method
Hello Naveen,
Thankyou so much for your videos they are very helpful.
Can you please explain the difference between / and // while writing xpath?
As per my research what i found is / will make selenium search the tag immediate next to the search node,where // will enable selenium to search the entire document is it true?
Please help me with your explaination on this.
Thanks in advance.
yes correct!
is there any training video from u on customization of x path
Here it is: ruclips.net/video/LywLnI7hHhw/видео.html
Hi Naveen
Output is not getting print on console with below code,Count is coming correct
for (int i=0;i
Hi Naveen,
Thanks for informative video, Can you please help on understanding excel operations using selenium
here you go: ruclips.net/video/uatGjMOapK8/видео.html
Thank You :)
Hi
How can we do the same using selenium python
Sir I have implemented this but when I did automation testing on ibibo flights I am unable to select the destination, I found problem in finding the locator, I beleive it is angular js application and difficult to find the locator, sir please try it is some how different
I m not able to get the list printed on console but getting the size on it....plzz help
List list=driver.findElements(By.xpath("//ul[@role='listbox']//li/descendant::div[@class='sbl1']"));
System.out.println("total number of suggestiong:"+list.size());
for(int i=0;i
This ain't working. I am getting the size as 0. Also, the source code of google page has changed. please help.
hi naveen,
I need help, in my code, find.elements is returning empty list i dont know why.
Just to try, I tried with the absolute xpath also but that is also giving null list.
But i can see suggestions on google.
Can you pls help me with this.
Hi Sugandha,Please try withList list=driver.findElements(By.xpath("//ul[@role='listbox']//li/descendant::div[@class='sbl1']"));
System.out.println("total number of suggestiong:"+list.size());
for(int i=0;i
@@BhardwajFamily1 its not working its showing empty for me .. have tried your code
I will check and let you know
@@BhardwajFamily1 we have to use implicitly wait then only its displaying the count and will click on the particular content. its working fine for me as well
Ok, as I need to review my code, I will check this in evening and then only we can discuss
I am trying to write xpath, but somehow it's not correct, can you please help me with updated one
Hi Naveen,
First of all, thanks a lot for preparing video lectures.
I have a question on this video. You have used //li/descendant::div in the xpath, however I tried with //li//div. The number and type of elements returned were same in both the cases. So, are both the ways right of doing this or only in this case it is returning the same elements.
If both are right way than is descendant equivalent to double slash ("//") and child equivalent to single slash ("/").
You response is awaited.
Thanks,
Chirag
sir can you please explain the auto suggest drop down for sites like redbus to get source and destination data to excel.
was asked in cognizant today
How can we automate drag functionality in Google map
very helpful
Hi naveen thanx I liked ur video so much, but please guide us how to install firepath and Firebug for chrome browser
hehe...no fire path and fire bug is there for ch
rome. they are addons only for fire fox......first understand the basics...
why we use colons while writing the dynamic expath
How can we handle google address api search for application?
Hello Naveen, I have given the xpath for the search box and sendkeys, but it is not recognizing and not giving any recomendations for the search. Finally the result is showing that there are 0 recomendations for the search. Please help me.
Try this script it will work.....
System.setProperty("webdriver.chrome.driver", "C:\\chromedriver_win32\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.get("www.google.com");
driver.findElement(By.xpath("//input[@id='lst-ib']")).sendKeys("selenium");
//without descendant
List ele = driver.findElements(By.xpath("//div[@class='sbqs_c']"));
//with descendant
//List ele = driver.findElements(By.xpath("//ul[@role='listbox']//li/descendant::div[@class='sbqs_c']"));
System.out.println(ele.size());
for(int i = 0; i
Lavanya implicit time lo code me tab sahi chalega
How to copy a field from excel and search(Ctrl+F) for it in a webpage using webdriver
can you explain the same concept by using google chrome ..??
I'm using chrome browser only.
sorry, u explain the top concept, by using firefox only....
Wat if that has testingtutorial ? How can we write the xpath in this case ?
xpath("//ul[@role='listbox']//li/descendant::div[@class='sbl1']")
ignore span tag..Use div tag ,that contains search term and tags .....
for me its worked properly....
@@anilkumarthota511 it's not working
purely XPath based programme
hello Naveen i am waiting for your reply for my last comment in your video 9 session 7
and today i am suffering with code
List list = driver.findElements(By.xpath("//ui[@role='listbox']//li/descendant::div[@class='sbl1']"));
System.out.println("total number ====>"+ list.size());
for(int i=0; i
Hi Naveen . Great to see your videos. when i was practicing dynamic google search I am getting a after div where we select a particular choice out of suggestion list. i used the class as Sb11 but after that there is Span tag because of whihc i am getting total list as zero. could you please suggest . used the code as below
List list = driver.findElements(By.xpath("//ul[@role='listbox']//li/descendant::div[@class='sb11']"));
Hi@swapna M did you get a resolution?
Use driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); after launching the browser if you haven't already. Also recheck the class name again since Google changes the code often.
Hi Naveen,
Thanks for this expalnation.I tried the same but i am gettiing Invalid selector Error.
i have used this line to get the list:
java.util.List list=driver.findElements(By.xpath("ul//[@role='listbox']//li/descendant::div[@class='sbqs_c']"))
Coz Google search locator has been changed now.
Naveen AutomationLabs
No I believe it is what I have pasted here
Check is your script contains wait/implicitlyWait statement or not... if not add wait it will work... it works with and without descendant.
System.setProperty("webdriver.chrome.driver", "C:\\chromedriver_win32\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.get("www.google.com");
driver.findElement(By.xpath("//input[@id='lst-ib']")).sendKeys("selenium");
//without descendant
List ele = driver.findElements(By.xpath("//div[@class='sbqs_c']"));
//with descendant
//List ele = driver.findElements(By.xpath("//ul[@role='listbox']//li/descendant::div[@class='sbqs_c']"));
System.out.println(ele.size());
for(int i = 0; i
@@gcvkannada Thanks Vishnu.
It was returning zero suggestions but after the use of Implictlywait ,it returned proper count.
@@gcvkannada sir ya jisa tara ap na kia han ma na bikul isi tara kia han but console ma mara 0 ah rha han br br driver.findElement(By.name("q")).sendKeys("Java"); List list = driver.findElements(By.xpath("//ul[@role='listbox']//li/descendant::div[@class='sbl1']")); System.out.println("Total number of suggestions in search box:::===>" + list.size()); ya code han mara
Hi Sir,
i tried to find xpath for auto suggestions list but it not displaying the list of suggestions.
List list=driver.findElements(By.xpath("//ul[@role='listbox']//li/descendant::div[@class='sbl1']"));
System.out.println("total number of suggestiong:"+list.size());
for(int i=0;i
@@BhardwajFamily1 total number of suggestions 0 aa rahe hai
Ok Sir, Implicittime lene per sahi chal raha hai code. Thankyou
sir ya jisa tara ap na kia han ma na bikul isi tara kia han but console ma mara 0 ah rha han br br
driver.findElement(By.name("q")).sendKeys("Java");
List list = driver.findElements(By.xpath("//ul[@role='listbox']//li/descendant::div[@class='sbl1']"));
System.out.println("Total number of suggestions in search box:::===>" + list.size());
ya code han mara
Hi sharrif,
Please try to put implicit wait function after you navigate to Chrome. Because the Chrome is not able to read the elements on the page after you write "Java".
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
Hi Naveen, Thanks for the video on xpath concepts , which is very useful.
Can you please let me know, difference between below 2 xpaths
//ul[@id='something']//ul//descendant ::div[@class='xyz']
//ul[@id='something']//ul//div[@class='xyz']
What is the befinit we are getting by using 'descendant', the same can be achieved with //.
//ul[@id='something']//ul//div[@class='xyz'] ------it works but ---- //ul[@id='something']//ul//descendant ::div[@class='xyz'] ------it doesn't work
very difficult steps please explain in only easy way .
Naveen, can i have your email please, i need help writing xpath. Thank you
Watch all his Xpath videos you will be in a great position to write xpath yourself.
Good luck
sir i am facing some issue in this program please help me out
List list=driver.findElements(By.xpath("//ul[@role='listbox']//li/descendant::div[@class='sbl1']"));
System.out.println("total number of suggestion:"+list.size());
for(int i=0;i
@@BhardwajFamily1 if(list.get(i).getText().contains("Testing Techniques") . Try like this Bhardwaj
@@babithkumarreddy7986 for better result use equals, if we will use contains our compiler will be confused which result it has to click
Hi All,
Getting exception saying "invalid selector: Unable to locate an element......".
This is the xpath i have used : //ul[@role='listbox']//li/descedant::div[@class='sbqs_c']
Please help me solve the issue.
Thanks in advance!
pls write descendant
Check is your script contains wait/implicitlyWait statement or not... if not add wait it will work... it works with and without descendant.
System.setProperty("webdriver.chrome.driver", "C:\\chromedriver_win32\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.get("www.google.com");
driver.findElement(By.xpath("//input[@id='lst-ib']")).sendKeys("selenium");
//without descendant
List ele = driver.findElements(By.xpath("//div[@class='sbqs_c']"));
//with descendant
//List ele = driver.findElements(By.xpath("//ul[@role='listbox']//li/descendant::div[@class='sbqs_c']"));
System.out.println(ele.size());
for(int i = 0; i
HI, this code is not working with as well as without descendant. It is returning 0 list. Can you please explain how to solve this issue
@@learningcool1994 , please past the full code, I will give a look. Thanks
@@gcvkannada its working for me ... as u said i have added implicitly wait in my script .. its displaying the count and printing the content as well.
thanks
Thanks but you made this video too long
thanks for this tutorial
Please give me this code...
if is present inside last tag, or if the list.size()=0 try webdriverwait():
List options = new WebDriverWait(driver, 10).until(ExpectedConditions.numberOfElementsToBeMoreThan(By.xpath("//ul[@role='listbox']//li/descendant::span"), 0));
System.out.println("no. of suggestions:"+options.size());
for(int i=0;i
Those who are facing issue and confused with span tag in between can try this xpath:-
List list=driver.findElements(By.xpath("//ul[@role='listbox' and @class='G43f7e']/parent::div[@class='OBMEnb']//preceding-sibling::div[@class='mkHrUc']//li/descendant::div[@class='wM6W7d WggQGd']"));
Also, if you are getting count as 0 make sure you give explicit wait just before writing your xpath
Thanks bro,it works