Tuesday 14 July 2009

New support site for Mobile Wireless Test Automation

I've created a public site containing topics related to mobile wireless test automation. I hope you find it useful, your feedback and comments are welcome.

Julian

Monday 3 December 2007

""" Markup Example 12

Adding a user-agent string to emulate a Nokia 6230

author: Julian Harty
edited: 03 December 2007
"""
import urllib
import re
import amara


def getHrefFromXML(doc, search_regex):
"""Returns the href link if the in search_regex is
found in any
tags.

Assumes the links are in the html body's div tags.

Args:
doc: an amara xml object
search_regex: the regular expression to match in
the href text

Returns:
the href as a string if the pattern is found, else None.
"""
ru1 = re.compile(search_regex)
for item in doc.html.body.div:
try:
# print str(item.a.xml_children[0])
# print type(item.a.xml_children[0])
p = ru1.search(item.a.xml_children[0])
if p:
return item.a.href
except:
pass

return None

if __name__ == "__main__":
  request = urllib.FancyURLopener()
  request.addheader('Accept',
    'application/xhtml+xml')
  request.addheader('User-Agent',
    'Nokia6230/2.0+(04.43)'
    '+Profile/MIDP-2.0+Configuration'
    '/CLDC-1.1+UP.Link/6.3.0.0.0')
  response = request.open("http://www.google.co.uk/m")
  content = response.read()

  # Use the live content
  doc = amara.parse(content)
  print "should return: '/gmm?source=m&dc=mobile-promotion'"
  print getHrefFromXML(doc, "Maps")

Markup exercise 12 using cached file

""" Markup Example 12 local

Adding a user-agent string to emulate a Nokia 6230
Reads the content from a cached file

author: Julian Harty
edited: 03 December 2007
"""
import re
import amara


def getHrefFromXML(doc, search_regex):
  """Returns the href link if the in search_regex is
  found in any div tags.

  Assumes the links are in the html body's div tags.

  Args:
    doc: an amara xml object
    search_regex: the regular expression to match in
      the href text

  Returns:
    the href as a string if the pattern is found, else None.
  """
  ru1 = re.compile(search_regex)
  for item in doc.html.body.div:
    try:
      # print str(item.a.xml_children[0])
      # print type(item.a.xml_children[0])
      p = ru1.search(item.a.xml_children[0])
      if p:
        return item.a.href
        except:
      pass

  return None

if __name__ == "__main__":
  # use a local copy of the content
  doc = amara.parse(open("mobile-homepage.xhtml"))

  print "should return: '/gmm?source=m&dc=mobile-promotion'"
  print getHrefFromXML(doc, "Maps")

Markup exercise 11b prettified

""" Markup Example 11

Defines the method getlLinkFromXhtml() which is later used to return the href
for a given regular expression, if it exists.

(Includes the code form markup example 07)

author: Julian Harty
edited: 03 December 2007
"""
import re
import sys
import urllib
import BeautifulSoup

from xml.dom import minidom

def getLinkFromXhtml(content, text_regex):
  """getLink returns the href link for a given text_label.

  Args:
    content: the source content e.g. an xHTML response.
    text_regex: the text to match as a regluar experession.
  Returns:
    The href if the test is found, else None.
  """

  doc = minidom.parseString(content)
  links = doc.getElementsByTagName('a')

  rx = re.compile(text_regex)

  for i in links:
    if i.hasAttribute('href'):
      t = i.firstChild
      text = ""
      while t:
        if t.nodeType == t.TEXT_NODE:
          text += t.data
        t = t.nextSibling
      match = rx.search(text)
      if match:
        return str(i.toxml())

  return None


request = urllib.FancyURLopener()
request.addheader('Accept', 'application/xhtml+xml')
request.addheader('User-Agent',
  'Nokia6230/2.0+(04.43)+Profile/MIDP-2.0+'
  'Configuration/CLDC-1.1+UP.Link/6.3.0.0.0')
response = request.open("http://www.google.co.uk/m")
content = response.read()

print getLinkFromXhtml(content, 'Maps with My Location')

soup = BeautifulSoup.BeautifulSoup(content)
#print soup.prettify()

# write the content to a file so it can be displayed in a browser
f = open("markup_ex11b_prettified.xml", "wb")
f.write(content)
f.close()


Sample python code Exercise 04 prettified


""" Markup Example 04


Adding the accept header for xHTML

author: Julian Harty
edited: 03 December 2007
"""
import urllib
import BeautifulSoup

request = urllib.FancyURLopener()
request.addheader('Accept', 'application/xhtml+xml')
response = request.open("http://www.google.co.uk/m")
content = response.read()

# Display the formatted contents
soup = BeautifulSoup.BeautifulSoup(content)
print soup.prettify()

# write the content to a file so it can be displayed in a browser
f = open("markup_ex04_prettified.xml", "wb")
f.write(content)
f.close()

Mobile Wireless Test Automation at EuroSTAR2007

I will be presenting on this topic at the EuroSTAR 2007 conference as a 1/2 day tutorial on Tuesday 4th December 2007. I expect to learn as much as I present from the 70+ participants who have booked to join me. Thank you all :)