Hello ,
I want to validate a scenario in which , I have to check the price of product listed in RecycleView .
Problem is There is Multiple Linear Layout with same id .
I tried follwoing code , I am able to get Text of Product , nut not able to get price of that product .
WebElement product_name=driver.findElement(By.xpath("//android.widget.TextView[@resource-id='com.snapdeal.main:id/productTitle' and @text='Healthvit Selenium 200mcg 60 Capsules']"));
System.out.println(product_name.findElement(By.id("com.snapdeal.main:id/productDisplayPrice")).getAttribute("text"));
I do I get it working. A working code is much more helpful.
Thanks
Aleksei
January 27, 2017, 12:44pm
2
example of finding parent item in iOS (in Android should be similar)
elem = ((IOSDriver) driver).findElement(MobileBy.xpath("//*[@value = " + descr + "]/.."));
parent of parent:
elem = ((IOSDriver) driver).findElement(MobileBy.xpath("//*[@value = " + descr + "]/../.."));
Thanks for that , I know this , but I am not able to figure out how to target that , NO such elemetn found exception.
I tried following path,
WebElement product_name=driver.findElement(By.xpath("//android.widget.LinearLayout[@resource-id='com.snapdeal.main:id/product_text_container']/android.widget.RelativeLayout/android.widget.TextView[@text='Healthvit Selenium 200mcg 60 Capsules']"));
System.out.println(product_name.getAttribute("text"));
System.out.println("Price of Product :"+product_name.findElement(By.xpath("//android.widget.LinearLayout[@resource-id='com.snapdeal.main:id/rating_layout']"
+ "/android.widget.RatingBar/android.widget.LinearLayout/android.view.ViewGroup/android.widget.TextView[@resource-id='com.snapdeal.main:id/productDisplayPrice']")).getAttribute("text"));
try mine. first find parent of parent (this give you LinearLayout) by “text” attribute with needed text e.g. “Healthvit Selenium 200mcg 60 Capsules”.
now you can find whatever you like e.g. get all TextViews inside and check all you need.
Can please rewrite xpath based on screenshots provided.
I am not able to relate it. tried all. And id of Product Name amd Product Price has different ids.
Aleksei
January 30, 2017, 10:23am
6
can you share pageSource? driver.getPageSource().
Aleksei
January 30, 2017, 10:42am
8
String descr = “Healthvit Selenium 200mcg 60 Capsules”;
parent = ((AndroidDriver) driver).findElement(MobileBy.xpath(“//*[@text = '” + descr + “']/…/…”));
not sure (not worked before in such way but try):
parent.findElement(MobileBy.id("productDisplayPrice")).getText();
parent.findElement(MobileBy.id("productOldPrice")).getText();
this should work:
parent.findElements(MobileBy.className("android.widget.TextView")).get(1).getText();
parent.findElements(MobileBy.className("android.widget.TextView")).get(2).getText();
1 Like
Thanks it work .
Was not aware of //* and /… in xpath.
Thanks