Hi All,
Thank you all for contribution. I was able to find two ways to solve above
main question, with our thread discussion. Generally in selenium,
driver.findElement() returns a type of WebElement, if there is such element
present. If there is no such an element it will throw an exception. To
overcome ,
1. we need to implement have separate method using
*driver.findElement(By.id("**identifier**"))*
https://github.com/wso2/product-es/blob/514b439c0b608bca4cca81f7c588a7dfeec598ad/modules/integration/tests-ui-integration/ui-test-utils/src/main/java/org/wso2/es/ui/integration/util/BaseUITestCase.java#L82
2. Next way is to use *driver.findElements(By.id("identifier")).size() . * This
method will return 0 (zero) even if such a element is not present. We do
not need to use try block here. It will not throw an exception.
Regards.
On Wed, Feb 10, 2016 at 7:32 PM, Malintha Fernando <[email protected]>
wrote:
> Hi Lahiru,
>
> Instead of using *driver.findElement(By.id(""))* you can use
> *driver.findElements(By.id(""))
> *which returns a List of elements. So you can check the size of the List.
> It doesn't fail the test even though elements are not existing.
>
> if you want to check whether there are any elements present and then fail
> the test based on it you can use following.
>
>
>
> *Assert.assertTrue(driver.findElements(By.id("identifier")).size() == 0);*
> - BR
> Malintha
>
>
> On Wed, Feb 10, 2016 at 11:53 AM, Dharshana Warusavitharana <
> [email protected]> wrote:
>
>> Hi Lahiru,
>>
>> You can use TestNg soft assert for this.
>>
>> Basically what you want is
>> 1. Check the element whether it is exists.
>> 2. It should not make assert fail and stop the test execution if element
>> is not there.
>> please refer [1] for soft assert.
>>
>> [1].
>> https://rameshbaskar.wordpress.com/2013/09/11/soft-assertions-using-testng/
>>
>> Thank you,
>> Dharshana.
>>
>> On Tue, Feb 9, 2016 at 5:32 PM, Madhawa Perera <[email protected]> wrote:
>>
>>> Hi Lahiru,
>>>
>>> Try following code snippet, if you are looking for a method, that
>>> returns true/false when checking the existence of an element.
>>>
>>> private boolean isElementPresent(By by) {
>>>
>>> if(driver.findElements(by).size() != 0){
>>> //System.out.println("true");
>>> return true;
>>> } else {
>>> //System.out.println("false");
>>> return false;
>>> }
>>> }
>>>
>>> Hope this will help you. Check the following [1] reference too.
>>>
>>> [1]
>>> http://stackoverflow.com/questions/6521270/webdriver-check-if-an-element-exists
>>>
>>> Regards,
>>> Madhawa
>>>
>>>
>>> On Tue, Feb 9, 2016 at 4:32 PM, Lahiru Cooray <[email protected]> wrote:
>>>
>>>> Hi Lahiru,
>>>>
>>>> I have faced the similar issue and I noticed that some times the
>>>> dynamically loaded elements are not loading when we are using wait.until()
>>>> without a driver refresh() So I used a similar code snipped like this:
>>>>
>>>>
>>>>
>>>> WebDriverWait tempWait = new WebDriverWait(driver, 5); //5 is the
>>>> waiting time in seconds
>>>>
>>>> for (int i = 0; i < 2; i++) {
>>>> try {
>>>>
>>>> tempWait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(
>>>> "a[href*='/store/assets/webapp/" + appId +
>>>> "']")));
>>>> driver.navigate().refresh();
>>>> break;
>>>> } catch (org.openqa.selenium.TimeoutException e) {
>>>> //Expected error when no element found
>>>> }
>>>> }
>>>>
>>>> Here i'm trying two times and waiting a fair time to load the element.
>>>>
>>>>
>>>> On Tue, Feb 9, 2016 at 3:34 PM, Lahiru J Ekanayake <[email protected]>
>>>> wrote:
>>>>
>>>>> Hi ,
>>>>>
>>>>> I have already tried with wait.until method. It will also return
>>>>> timeout exception searching after given timeout. I think anyway we have
>>>>> to
>>>>> use try block to check existences of an element. I have looked for a
>>>>> method that returns ture/false on a given element existence . I'm not sure
>>>>> that kind of method already in selenium.
>>>>> Thank you for your help.
>>>>>
>>>>> Regards
>>>>>
>>>>> On Tue, Feb 9, 2016 at 3:13 PM, Rajeenthini Satkunam <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi lahiru,
>>>>>>
>>>>>> If you need to check that element is present in the current UI, You
>>>>>> can go with this method *isElementPresent(By by)*.
>>>>>>
>>>>>> for example in your case *driver.**isElementPresent*
>>>>>> *(By.id("elemnt_id")) *will return true if the element is present in
>>>>>> current UI or else it will return false.Hope it will help you.
>>>>>>
>>>>>> For your reference
>>>>>>
>>>>>> [1] -
>>>>>> https://github.com/wso2/product-ds/blob/master/modules/integration/tests-ui-integration/ui-test-utils/src/main/java/org/wso2/ds/ui/integration/util/DSWebDriver.java#L47
>>>>>>
>>>>>> On Tue, Feb 9, 2016 at 3:01 PM, Lahiru J Ekanayake <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi ,
>>>>>>>
>>>>>>> I'm writing selenium tests for GREG publisher UI. When implementing
>>>>>>> UI test cases, some situations we need to check whether some elements
>>>>>>> exists, before click or make any operations on them.
>>>>>>> Selenium provides, *driver.findElement(By.id("elemnt_id")) *
>>>>>>> method to find any element by id. Problem is if that element is not
>>>>>>> exist , it will return an error, saying
>>>>>>> *org.openqa.selenium.NoSuchElementException: Unable to locate
>>>>>>> element:{"method":"id","selector":"elemnt_id"}*
>>>>>>>
>>>>>>> Is there any way to check the existence of any element , without
>>>>>>> catching the error? .
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Regards
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> *Lahiru J Ekanayake**Software Engineer*
>>>>>>> Mobile : +94 (0) 77 8812629 / +94(0) 778509547
>>>>>>> Email : [email protected]
>>>>>>> WSO2, Inc.; http://wso2.com/
>>>>>>> lean . enterprise . middleware.
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Dev mailing list
>>>>>>> [email protected]
>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>>
>>>>>> *Thank You.*
>>>>>>
>>>>>> *Rajeenthini Satkunam*
>>>>>>
>>>>>> *Associate Software Engineer | WSO2*
>>>>>>
>>>>>>
>>>>>> *E:[email protected] <[email protected]>*
>>>>>>
>>>>>> *M :+94770832823 <%2B94770832823> *
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>>
>>>>>
>>>>> *Lahiru J Ekanayake**Software Engineer*
>>>>> Mobile : +94 (0) 77 8812629 / +94(0) 778509547
>>>>> Email : [email protected]
>>>>> WSO2, Inc.; http://wso2.com/
>>>>> lean . enterprise . middleware.
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Dev mailing list
>>>>> [email protected]
>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> *Lahiru Cooray*
>>>> Software Engineer
>>>> WSO2, Inc.;http://wso2.com/
>>>> lean.enterprise.middleware
>>>>
>>>> Mobile: +94 715 654154
>>>>
>>>> _______________________________________________
>>>> Dev mailing list
>>>> [email protected]
>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>
>>>>
>>>
>>>
>>> --
>>> Madhawa Perera
>>> *Software Engineer*
>>> Mobile : +94 (0) 773655496
>>> <%2B94%20%280%29%20773%20451194>
>>> [email protected]
>>>
>>> _______________________________________________
>>> Dev mailing list
>>> [email protected]
>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>
>>>
>>
>>
>> --
>>
>> Dharshana Warusavitharana
>> Senior Software Engineer , Test Automation
>> WSO2 Inc. http://wso2.com
>> email : [email protected] <[email protected]>
>> Tel : +94 11 214 5345
>> Fax :+94 11 2145300
>> cell : +94770342233
>> blog : http://dharshanaw.blogspot.com
>>
>> lean . enterprise . middleware
>>
>> _______________________________________________
>> Dev mailing list
>> [email protected]
>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>
>>
>
>
> --
> Malintha Fernando
> Software Engineer
> WSO2 Inc. | http://wso2.com
> Mobile : +94 8874922
> Blog : http://blog.malintha.org
>
> Lean . Enterprise . Middleware
>
>
>
>
>
>
>
--
*Lahiru J Ekanayake**Software Engineer*
Mobile : +94 (0) 77 8812629 / +94(0) 778509547
Email : [email protected]
WSO2, Inc.; http://wso2.com/
lean . enterprise . middleware.
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev