Monday 26 October 2015

package org.junit does not exist

package org.junit does not exist

Your Test class might be located in src/main/java.
Also the value of the "scope" element in the POM for JUnit was "test", although that is how it is supposed to be.
The problem was that You had been sloppy when creating the test class in Eclipse that is
resulting in it being created in src/main/java insted of src/test/java.

So put your .java class in src/test/java


And in pom.xml just add  <scope>test</scope> for junit dependency if it is already existed.


<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.11</version>
  <scope>test</scope>
</dependency>

Wednesday 21 October 2015

How to clear passwords in firefox

Some times even though we clear cookies passwords saves in firefox browser because on firefox passwords stores on security tab. to clear those passwords we have to navigate to the below path .

On firefox Click on right corner tab and click on Preferences it navigates to 

about:preferences

 Security-> Saved Passwords

then click on Remove all button

about:preferences


Security-> Saved Passwords

How to test your website for different countries just by setting proxy ip address on browser

If you are test your website for different countries just by sitting in UK if you want to see how your site behaves to USA clients. You can test  by setting proxy in your browser.


 Fox proxy chrome type in google for plug in  and install

 Open browser on right side you see blue icon click on that 
It should open this extension





 click on Options

 Then click on Add new proxy


 Under Proxy details tab


 Enter your country ip address Host or IP Address
 for example USA IP address 69.147.161.182:8080
 Ip address you can get from here

http://www.samair.ru/proxy-by-country/United-States-01.htm


To choose different country ip 

http://www.samair.ru/proxy/


If you want to give name to the proxy whatever you have created 



After that click on SAVE button

Open a browser and click on right side blue icon


Enable to click on your proxy 

Now clear all your cookies and open new tab of browser
Or else you can open site in 

incognito tab 



now search for www.google.com .. It should open .com site since we setup USA proxy ip address .

As a results you can sit in any country for example in UK but if you want to see how your site behaves to USA clients 

ANDROID_HOME not set appium java

Where the Android-SDK is installed depends on how you installed it. If you downloaded the SDK through their website and then dragged/dropped the Application to your Applications folder, it's most likely in /Applications/ADT/sdk (as it is in your case).

If you installed it using Homebrew (brew install android-sdk), then it's located here:

/usr/yourusername/android-sdks



env | grep ANDROID_HOME on the terminal that is working. If the file is already existed This should give something like
ANDROID_HOME=/usr/yourusername/android-sdks


If not they do changes on Bash file

Type below command to check whether bash_profile existed or not
ls -1 ~/.bash_profile
 
If it is not existed then it message throws as “No such file or directory”
touch ~/.bash_profile 


now open .bash_profile, if you dont have one just create one
vi ~/.bash_profile
Add the following:

esc + i   it allow to enter data into vim editor

#set ANDROID_HOME

ANDROID_HOME=/usr/yourusername/android-sdks

export ANDROID_HOME


Once you have this set, you need to add this to the PATH environment variable

export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

Now save the file  by pressing below commands esc + :wq  
And after that to execute bash file 
 source ~/.bash_profile
 
 Now if you type this command it should show path
 
 echo $ANDROID_HOME

Tuesday 17 February 2015

Free responsive website development help video tutorials


Free responsive website development help video tutorials

https://developers.google.com/web/fundamentals/getting-started/?hl=en


https://www.udacity.com/wiki/cs256

Thursday 29 January 2015

How to setup or run automation scripts on chrome browser for Selenium automation testing


How to setup or run automation scripts on chrome browser for Selenium automation testing 

Here I am giving some example to control browsers from config.properties file as well.

Step 1:Create a folder name config under your project 
Step 2: Create a file name call it as config.properties file

Step 3: paste this  
#### Control browsers from here 'Firefox, Chrome, Internet Explorer’ whenever you want to change browser you can change here directly.
BROWSER=chrome
Step 4: 
Download Chrome driver from this page


or   directly from here

Create a folder in your selenium project as Chrome driver and place this Chrome  .exe file in that folder

And now right click on that .exe take path.

Example path like this :     projectname//src//chromedriver//chromedriver



Step 5: Create a java file as below


import java.io.FileInputStream;
import java.io.InputStream;
import java.util.PropertyResourceBundle;

import java.util.ResourceBundle;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class DriverStart 
{
public static WebDriver driver;
public static String BROWSER = null;
public static String USERDIR = System.getProperty("user.dir”);
public static ResourceBundle bundle = null;
public static InputStream initPropertyFile = null;
public static String PROPERTY_PATH = null;
public JavascriptExecutor jse;


PROPERTY_PATH = USERDIR
+ "/Config/config.properties";
if (initPropertyFile == null) {
initPropertyFile = new FileInputStream(PROPERTY_PATH);  
}
if (bundle == null) {
bundle = new PropertyResourceBundle(initPropertyFile);
}

BROWSER = bundle.getString("BROWSER");


if (BROWSER.equalsIgnoreCase("chrome")) {
File file = new File(“Chrome drive .exe file path");
System.setProperty("webdriver.chrome.driver", file.getAbsolutePath());
driver = new ChromeDriver();
builder = new Actions(driver); 
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS );

                                       jse = (JavascriptExecutor) driver;

 }


// Here you can call Firefox..
if (BROWSER.equalsIgnoreCase("firefox")) {

driver = new FirefoxDriver();
builder = new Actions(driver); 
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS );
jse = (JavascriptExecutor) driver;

}

}



Tuesday 27 January 2015

How to automate scroll up or down button in selenium java

How to automate scroll up or down button in selenium java


WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollBy(0,250)", "");
or, you can do as follows:

jse.executeScript("scroll(0, 250);”);

If you want to do up use this script.
 For scroll up: jse.executeScript("scroll(250, 0)");

Thursday 22 January 2015

How to create a dynamic email id in selenium cucumber java in automation testing


How to create a dynamic email id in selenium cucumber java in automation testing

public static final DateFormat EMAIL_ DATE_FORMAT = new SimpleDateFormat("HHmmss-dd-MMM-yyyy”);
This method you can create in superclass that class name is Utils
  public static String getUniqueEmailName() {
                    return EMAIL_ DATE_FORMAT.format(new Date()) + “@hotmail.com";
    }

And then in sub class you can call like this… 
public void Click(String Value, Utils utils) throws Exception {

public static String genEmailEdited;
genEmailEdited = superclass or utils.getUniqueEmailName();
System.out.println("the new edited email is --------->" + genEmailEdited);

driver.findElement(By.xpath(xpathcomehere )).sendKeys(genEmailEdited);
}
OR


import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {
  public static void main(String[] argv) throws Exception {
    Format formatter = new SimpleDateFormat("EEE, dd/MM/yyyy");
    String today = formatter.format(new Date());
    System.out.println("Today : " + today);

  }
}

Friday 16 January 2015

How to verify whether the image is present or not on Selenium java cucubmer

How to verify whether the image is present or not on Selenium java cucubmer

if(driver.findElement(By.xpath("xpath of
image")).getAttribute("src").contains("image file name present in the html
source"));

it just verifies that the given image link present in the html source or
not. To verify that whether the image is displayed or not, you try to use
isDisplayed() command.

Wednesday 7 January 2015

java.lang.ClassNotFoundException: com.google.common.net.MediaType



Solution

You need Google Guava in your classpath by the looks of things. This is where the class com.google.common.base.Function lives.

Just in case if you are using maven setup include this dependency in pom.xml

<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>



Error looks as below:





java.lang.NoClassDefFoundError: com/google/common/net/MediaType
at org.openqa.selenium.remote.http.JsonHttpCommandCodec.encode(JsonHttpCommandCodec.java:197)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:163)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:66)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:572)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:240)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:126)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:139)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:171)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:160)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:117)
at skeleton.Utils.init(Utils.java:127)
at skeleton.Stepdefs.i_wait_hour(Stepdefs.java:27)
at ?.When I wait 1 hour(skeleton/belly.feature:5)
Caused by: java.lang.ClassNotFoundException: com.google.common.net.MediaType
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at org.openqa.selenium.remote.http.JsonHttpCommandCodec.encode(JsonHttpCommandCodec.java:197)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:163)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:66)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:572)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:240)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:126)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:139)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:171)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:160)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:117)
at skeleton.Utils.init(Utils.java:127)
at skeleton.Stepdefs.i_wait_hour(Stepdefs.java:27)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at cucumber.runtime.Utils$1.call(Utils.java:34)
at cucumber.runtime.Timeout.timeout(Timeout.java:13)
at cucumber.runtime.Utils.invoke(Utils.java:30)
at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:35)
at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)
at cucumber.runtime.Runtime.runStep(Runtime.java:298)
at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)
at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)
at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:48)
at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:91)
at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)

Monday 5 January 2015

BDD cucumber example

BDD cucumber example
http://aslakhellesoy.com/post/20006051268/cucumber-jvm-1-0-0

https://github.com/cucumber/cucumber-java-skeleton

https://github.com/cucumber/cucumber-java-skeleton/releases

The best explanation

http://www.srccodes.com/p/article/48/cucumber-test-behavior-driven-development-bdd-feature-step-runner-glue-gherkin-data-table-scenario-given-when-then

BDD JVM Cucumber with masterthoughts reporting pom.xml workable

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.stag.simplecucumber</groupId>
    <artifactId>simple-cucumber-jvm</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <properties>
        <cucumber-jvm.version>1.0.11</cucumber-jvm.version>
        <selenium.version>2.44.0</selenium.version>
        <junit.version>4.11</junit.version>
        <picocontainer.version>2.13.6</picocontainer.version>
        <cucumber-reporting.version>0.0.17</cucumber-reporting.version>
    </properties>
    
    
    <repositories>
       <repository>
           <id>repo.bodar.com</id>
           <url>http://repo.bodar.com</url>
       </repository>
       <repository>
                <id>sonatype-releases</id>
                <url>https://oss.sonatype.org/content/repositories/releases/</url>
            </repository>
   </repositories>

  
    <dependencies>

        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-picocontainer</artifactId>
            <version>${cucumber-jvm.version}</version>
            <scope>test</scope>
        </dependency>
        
         <dependency>
           <groupId>com.googlecode.totallylazy</groupId>
           <artifactId>totallylazy</artifactId>
           <version>1077</version>
   </dependency>
         
             <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>1.2.0</version>
            <scope>test</scope>
        </dependency>
   <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>1.2.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
        </dependency>
        <dependency>
            <groupId>org.picocontainer</groupId>
            <artifactId>picocontainer</artifactId>
            <version>${picocontainer.version}</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>${selenium.version}</version>
        </dependency>
      <dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
      
        <dependency>
            <groupId>net.masterthought</groupId>
            <artifactId>cucumber-reporting</artifactId>
            <version>${cucumber-reporting.version}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.10</version>
                <configuration>
                    <skipTests>false</skipTests>
                    <testFailureIgnore>true</testFailureIgnore>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <testFailureIgnore>true</testFailureIgnore>
                </configuration>
            </plugin>
            <plugin>
                <groupId>net.masterthought</groupId>
                <artifactId>maven-cucumber-reporting</artifactId>
                <version>0.0.5</version>
                <executions>
                    <execution>
                        <id>execution</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <projectName>cucumber-jvm-example</projectName>
                            <outputDirectory>${project.build.directory}/cucumber-html-reports</outputDirectory>
                            <cucumberOutput>${project.build.directory}/cucumber.json</cucumberOutput>
                
                            <enableFlashCharts>false</enableFlashCharts>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
             
        </plugins>
    </build>


</project>

org.junit.runner.Description.createSuiteDescription(Ljava/lang/String;Ljava/io/Serializable;[Ljava/lang/annotation/Annotation;)Lorg/junit/runner/Description

org.junit.runner.Description.createSuiteDescription(Ljava/lang/String;Ljava/io/Serializable;[Ljava/lang/annotation/Annotation;)Lorg/junit/runner/Description

I found the cause of this the problem is that the cucumber.json file does not exist.

I addressed this in my project by adding json:target under the @CucumberOptions annotation, this then generated the json. for example @CucumberOptions(features = "src/test/resources/features/some.feature", monochrome = false, format = {"pretty", "json:target/cucumber.json"})

The masterthought plugin then processes the generated JSON by looking for it at ${project.build.directory}/cucumber.json

At this point the Maven plugin generates the HTML from the JSON.


For this you have to setup as below at both the places

and in Junit runner .. mention "json:target/cucumber.json" problem will resolve.


package skeleton;

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@CucumberOptions(format = {
        "pretty","html:target/cucumber-html-reports","json:target/cucumber.json" })


public class RunCukesTest {
}



In pom.xml do like this
 <plugin>
                <groupId>net.masterthought</groupId>
                <artifactId>maven-cucumber-reporting</artifactId>
                <version>0.0.5</version>
                <executions>
                    <execution>
                        <id>execution</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <projectName>cucumber-jvm-example</projectName>
                            <outputDirectory>${project.build.directory}/cucumber-html-reports</outputDirectory>
                            <cucumberOutput>${project.build.directory}/cucumber.json</cucumberOutput>
                
                            <enableFlashCharts>false</enableFlashCharts>
                        </configuration>
                    </execution>
                </executions>

            </plugin>


References

https://github.com/masterthought/maven-cucumber-reporting-mojo

http://www.masterthought.net/section/cucumber-reporting-downloads