// iOS // Find element in table cell driver.findElementByXPath("//XCUIElementTypeCell/XCUIElementTypeStaticText[@name='some-id']")); // Print source of screen visible System.out.println(driver.getPageSource()); //default timeout for all commands executed using this driver. can be overridden using explicit wait driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS); //EXPLICIT wait for element for x seconds // If explicit wait > implicit wait , then greater driver will default to greater wait period int seconds= 3; WebDriverWait wait = new WebDriverWait(driver, seconds); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("some-id"))); // UIAutomation(IOS)// Find visibility of element using XPath xpath = "UIATableCell/UIAStaticText[@label='Family'][@visible='true']"; driver.findElementByXPath(xpath); click on first table cell (xpath may change based on your application) xpath("//UIAApplication[1]/UIAWindow[1]/UIATableView[1]/UIATableCell[1]").click
Tech Blog updated with solution for latest problems, I encountered with selenium and mobile testing. I professionally specialize in Calabash IOS & Android, Robotium
Showing posts with label osx. Show all posts
Showing posts with label osx. Show all posts
Thursday, 22 September 2016
Helper methods Appium 1.6.0 Beta
1) Appium 1.6.0 beta1 Installation
I have managed to run my IOS tests on XCUItest using below changes.
Elements have to migrated from UIA to XCUI elements
Inorder to run appium on 1.6.0 beta 1 for ios 10 and xcode 8
use below settings
[caps]
platformName = "iOS"
orientation = "PORTRAIT"
platformVersion = "10.0"
deviceName ="iPhone Simulator"
noReset = "false"
automationName = "xcuitest"
appiumVersion = "1.6.0-beta1"
app="<app_path>/<app_name>.app"
[appium_lib]
Installation
npm uninstall appium
npm install appium@1.6.0-beta1
npm install -g appium-xcuitest-driver
Install carthage dependency manager
Error : Fetching dependencies\nPlease make sure that you have Carthage installed (https://github.com/Carthage/Carthage)\nNote: We are expecting that carthage installed in /usr/local/bin/\n',
Solution : brew install carthage

Elements have to migrated from UIA to XCUI elements
Inorder to run appium on 1.6.0 beta 1 for ios 10 and xcode 8
use below settings
[caps]
platformName = "iOS"
orientation = "PORTRAIT"
platformVersion = "10.0"
deviceName ="iPhone Simulator"
noReset = "false"
automationName = "xcuitest"
appiumVersion = "1.6.0-beta1"
app="<app_path>/<app_name>.app"
[appium_lib]
Installation
npm uninstall appium
npm install appium@1.6.0-beta1
npm install -g appium-xcuitest-driver
brew install carthage
Install carthage dependency manager
Error : Fetching dependencies\nPlease make sure that you have Carthage installed (https://github.com/Carthage/Carthage)\nNote: We are expecting that carthage installed in /usr/local/bin/\n',
Solution : brew install carthage

Xcode 8 Installation :
download xcode
unzip the xcode file
Rename old /Applications/Xcode.app to /Applications/Xcode7.app(incase you still want to keep it)
Drag new Xcode app to /Applications/Xcode.app
Open Xcode and install it
Other fixes:
If you encounter issues check here - https://github.com/appium/appium/issues/6853
I had to manually run bootstrap as mentioned in above link
cd ~/.npm-global/lib/node_modules/appium-xcuitest-driver/WebDriverAgent
sh Scripts/bootstrap.sh
To Properly install node check this link - https://github.com/sindresorhus/guides/blob/master/npm-global-without-sudo.md
Monday, 5 August 2013
Reading plist file using ruby : useful for calabash IOS Automation
#!/usr/bin/ruby -w
# encoding: utf-8
require 'plist'
def read_plist(plist_file)
result=Plist::parse_xml(plist_file)
i=0
result.each { |k, v|
i=i+1
puts k
puts v
puts
}
end
read_plist("features/dump/test.plist")
# encoding: utf-8
require 'plist'
def read_plist(plist_file)
result=Plist::parse_xml(plist_file)
i=0
result.each { |k, v|
i=i+1
puts k
puts v
puts
}
end
read_plist("features/dump/test.plist")
Sample plist file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Language</key>
<string>Svenska</string>
<key>Version</key>
<integer>4</integer>
</dict>
</plist>
very useful while readings strings for localisation (calabash)
Saturday, 18 May 2013
Get rid of facetime, misson control from mac on every start in 3 steps
Step 1) cd /Library/Preferences
Step 2) sudo vi com.apple.dockfixup.plist
Step 3) Locate unwanted startup items and remove them , save the file and exit it and restart ur machine
Happy 'mac'ing
<dict>
<key>after</key>
<string>begin</string>
<key>path</key>
<string>/Applications/Mission Control.app</string>
<key>tile-data</key>
<dict>
<key>file-type</key>
<integer>169</integer>
</dict>
</dict>
<dict>
<key>after</key>
<string>/Applications/Mission Control.app</string>
<key>path</key>
<string>/Applications/App Store.app</string>
</dict>
<dict>
<key>after</key>
<string>end</string>
<key>group</key>
<integer>80</integer>
<key>path</key>
<string>/Applications/Server.app</string>
<key>server</key>
<true/>
</dict>
<dict>
<key>after</key>
<string>/Applications/iChat.app</string>
<key>path</key>
<string>/Applications/FaceTime.app</string>
</dict>
Step 2) sudo vi com.apple.dockfixup.plist
Step 3) Locate unwanted startup items and remove them , save the file and exit it and restart ur machine
Happy 'mac'ing
<dict>
<key>after</key>
<string>begin</string>
<key>path</key>
<string>/Applications/Mission Control.app</string>
<key>tile-data</key>
<dict>
<key>file-type</key>
<integer>169</integer>
</dict>
</dict>
<dict>
<key>after</key>
<string>/Applications/Mission Control.app</string>
<key>path</key>
<string>/Applications/App Store.app</string>
</dict>
<dict>
<key>after</key>
<string>end</string>
<key>group</key>
<integer>80</integer>
<key>path</key>
<string>/Applications/Server.app</string>
<key>server</key>
<true/>
</dict>
<dict>
<key>after</key>
<string>/Applications/iChat.app</string>
<key>path</key>
<string>/Applications/FaceTime.app</string>
</dict>
How to make personal website in 5$ / 5£ / 500 Rupees & 10 minutes!!
I started making a website for one of my relative and had to refresh my memory on how to get it up and running.
Here is how simple way to do it
2) web hosting server
3) Some html page.
2) For web host server, I chose www.50webs.com/ which is my favorite free web hosting server for almost 5 years now.
Other options are using wordpress or blogger or some paid servers like hostgator
3) HTML code
open note pad , copy below code and save it as "index.html"
<!DOCTYPE html>
<html>
<body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>
</body>
</html>
Hope you website must be up & running soonHere is how simple way to do it
Ingredients needed :
1) Domain name2) web hosting server
3) Some html page.
How to get them
1) I registered my domain at http://www.bigrock.in/, You can get a domain name at other popular sites like godaddy.com / net4.in2) For web host server, I chose www.50webs.com/ which is my favorite free web hosting server for almost 5 years now.
Other options are using wordpress or blogger or some paid servers like hostgator
3) HTML code
open note pad , copy below code and save it as "index.html"
<!DOCTYPE html>
<html>
<body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>
</body>
</html>
Steps to do at Bigrock website
- Login to ur domain provider (say you have purchased domain name hello.com)
- click on your domain and choose website manager or similar options
- update nameserver to point to your webhost in this case its dns1.50webs.com and dns2.50webs.com check pic4
- Once you have set nameservers wait for an hour or so and check domain provider website again Check picture fig5 below, It indicates some warnings ignore them (these warnings are an indication that nameservers are recognized)
- Mean proceed to next section where we upload files to web host
![]() |
Pic4: Set name servers |
![]() |
Fig5: Ignore these errors |
Steps for uploading files to webhost (50webs.com in this case)
- Create login and log into 50webs.com
- Go to domain manager -> my domains -> hosted domain -> host domain
- Create a domain name exactly same as your website name (purchased with bigrock ex: hello.com). Having same name will help 50webs resolve DNS to your website for all incoming traffic that comes to your domain purchased at bigrock.
- Copy the index.html file we saved previously in to file manager for the newly created domain in step3
- Wait for 1-2 hours for DNS and NS to recognize ur website
- In my case it took1 hour but it might take upto 24 hours for DNS to be working properly
Drop a link to ur site when you have created using my blog
It makes me feel proud :)
Thursday, 9 May 2013
Calabash-IOS: Tips to search elements in View and webview
Calabash supports identification of view both using xpath & CSS
Its confirmed in in here https://groups.google.com/forum/#!msg/calabash-ios/nubfmY-6jbM/aSoYtW9mT8cJ
But this information is missing in wiki page
Usage :
Using CSS to identify elements : query("webView css:'#header'")
for xpath identification replace css by xpath and specify the path.
In Calabash-IOS there is no way to get source of HTML page, Getting elements from page
can be bit tricky, There are several possibilities to get past this
check my video on this www.youtube.com/watch?v=w5rxvI3w2Ss
And also check below video
1) Use query("webView css:'*'") to get all associated elements on page then search for text you are looking at.
Index of results returned from query can be used to identify elements
Example:
res=query("webView css:'*'")
res[12] - could be the element you may want to verify
2) To verify if object is shown on screen .empty? can be very handy
res=query("view text:'SomeText'").empty? # res is false if element is present
use begin rescue block (in Ruby) to catch these exceptions and handle them
3) use regular expression
4) Using variables in search
5) Looping up and down until text found
end
or
7) to check first & last result of array
Its confirmed in in here https://groups.google.com/forum/#!msg/calabash-ios/nubfmY-6jbM/aSoYtW9mT8cJ
But this information is missing in wiki page
Usage :
Using CSS to identify elements : query("webView css:'#header'")
for xpath identification replace css by xpath and specify the path.
In Calabash-IOS there is no way to get source of HTML page, Getting elements from page
can be bit tricky, There are several possibilities to get past this
check my video on this www.youtube.com/watch?v=w5rxvI3w2Ss
And also check below video
1) Use query("webView css:'*'") to get all associated elements on page then search for text you are looking at.
Index of results returned from query can be used to identify elements
Example:
res=query("webView css:'*'")
res[12] - could be the element you may want to verify
2) To verify if object is shown on screen .empty? can be very handy
res=query("view text:'SomeText'").empty? # res is false if element is present
use begin rescue block (in Ruby) to catch these exceptions and handle them
3) use regular expression
query("view {text LIKE '*hello*'} ")
4) Using variables in search
text_to_check="hello"
query("view {text LIKE '*#{text_to_check}*'} ") 5) Looping up and down until text found
while(true)
begin
#check text found and click
rescue
#if there was any exception reported
scroll("view",:down)
end end
or
wait_poll(:until_exists => "label text:'Cell 22'", :timeout => 20) do scroll("tableView", :down) end
6)For converting case use upcase function
"hello".upcase
7) to check first & last result of array
arr=query("view {text LIKE '*#{text_to_check}*'} ")
arr.first
arr.last
Monday, 6 May 2013
Calabash-IOS helping tester to setup project - Not a guide for devs
This is a like a quick guide to help tester setup certificate and IOS project for calabash-ios
1) Create apple developer account
https://developer.apple.com/ then add your account to your company list for that you may need invitation from one of other team members who are already in that group
2) Go to https://developer.apple.com/devcenter/ios/index.action and log in with user name & pwd
1) Create apple developer account
https://developer.apple.com/ then add your account to your company list for that you may need invitation from one of other team members who are already in that group
2) Go to https://developer.apple.com/devcenter/ios/index.action and log in with user name & pwd
- Go to Certificates, Identifiers & Profiles
- under Certificates, download certificate for ur name
- Double click on and add it login key chain
- Connect device
- Go to xcode -> window > organizer
- select device -> click on add portal
Now you device must be all set to be used for current project
Error & Solution:
to use dev certificate that was present on old machine on new machine export p12 certificate from previous machine and then use it here
This link will help in doing that - http://www.utexas.edu/its/help/user-certs/812
Setting folder name to show in mac terminal prompt
To set terminal prompt to show name of current folder use the below command
echo 'export PS1="\W \$: "' >> ~/.bash_profile
PS1 can be configured to show the terminal prompt to show below options
- \d – Current date
- \t – Current time
- \h – Host name
- \# – Command number
- \u – User name
- \W – Current working directory (ie: Desktop/)
- \w – Current working directory, full path (ie: /Users/Admin/Desktop)
Calabash-ios backdoor - A Magic way to set precondition in calabash - Be careful & choosy while using it
Lets looks at the Use of it
I had a test app for which i had to write tests but after each login, to logout I had to navigate 4-5 pages, This added extra overhead to my testing
Suppose i have 3 tests and second test fails without logging out I would never have starting point for my 3rd test and hence that would fail
I wanted a single start point from where I start my test each time. Thats when I decided to use calabash backdoor function.
Lets looks at changes first
1) Added below function delaration in app AppDelegate.m
This code will change for your application but the way of using it is similar.
In my case dev team member helped me with logout functionality
#pragma mark -
#pragma mark - Calabash Method
- (NSString *) calabashBackdoor:(NSString *)aIgnorable
{
[[ONEApplication sharedInstance] logOut];
AppDelegate* delegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
[delegate showLoggedOutViewController];
return aIgnorable;
}
2) Add declaration in AppDelegate.h
This can be kept as below or method name can be changed but method signature has to be maintained.
//Calabash Method
- (NSString *) calabashBackdoor:(NSString *)aIgnorable;
3) Now compile the Application
Time of verify changes are reflected or not
4) Deploy application , Launch calabash-ios console
run 'calabashBackdoor' command and this must be executed on the application
I had a test app for which i had to write tests but after each login, to logout I had to navigate 4-5 pages, This added extra overhead to my testing
Suppose i have 3 tests and second test fails without logging out I would never have starting point for my 3rd test and hence that would fail
I wanted a single start point from where I start my test each time. Thats when I decided to use calabash backdoor function.
Lets looks at changes first
1) Added below function delaration in app AppDelegate.m
This code will change for your application but the way of using it is similar.
In my case dev team member helped me with logout functionality
#pragma mark -
#pragma mark - Calabash Method
- (NSString *) calabashBackdoor:(NSString *)aIgnorable
{
[[ONEApplication sharedInstance] logOut];
AppDelegate* delegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
[delegate showLoggedOutViewController];
return aIgnorable;
}
2) Add declaration in AppDelegate.h
This can be kept as below or method name can be changed but method signature has to be maintained.
//Calabash Method
- (NSString *) calabashBackdoor:(NSString *)aIgnorable;
3) Now compile the Application
Time of verify changes are reflected or not
4) Deploy application , Launch calabash-ios console
run 'calabashBackdoor' command and this must be executed on the application
Simple steps to get ruby 1.9.3 for calabash on mac osx 10.7
I did face this problem of getting ruby 1.9.3 on mac osx 10.7
Then I realized I need rvm but before doing all this I did need xcode installed
this must be easy for mac experts not for me definitely
Here are simple steps for a mac beginner to get ruby 1.9.3
Then I realized I need rvm but before doing all this I did need xcode installed
this must be easy for mac experts not for me definitely
Here are simple steps for a mac beginner to get ruby 1.9.3
- Download install xcode from appstore
- Install command line tools from xcode - Go to xcode->preferences->downloads->components->commandline tools
- Install RVM
\curl -#L https://get.rvm.io | bash -s stable --autolibs=3 --ruby - Install ruby using RVM - Install ruby 1.9.3 and use it
rvm install 1.9.3
rvm use 1.9.3
Errors & Solution
If there are error in RVM installation do this
Type following commands
~ $: source ~/.rvm/scripts/rvm
~ $: type rvm | head -n 1
rvm is a function
~ $: vi ~/.bash_profile add this line into bash_profile
If there are error in RVM installation do this
Type following commands
~ $: source ~/.rvm/scripts/rvm
~ $: type rvm | head -n 1
rvm is a function
~ $: vi ~/.bash_profile add this line into bash_profile
"source ~/.rvm/scripts/rvm"
Install ruby 1.9.3 and use it
Install ruby 1.9.3 and use it
Subscribe to:
Posts (Atom)