diff --git a/Lib/test/test_minidom.py b/Lib/test/test_minidom.py
index a8c0b10..fad7f36 100644
--- a/Lib/test/test_minidom.py
+++ b/Lib/test/test_minidom.py
@@ -1,10 +1,8 @@
 # test for xml.dom.minidom
 
-import os
-import sys
 import pickle
 from StringIO import StringIO
-from test.test_support import verbose, run_unittest
+from test.test_support import verbose, run_unittest, findfile
 import unittest
 
 import xml.dom
@@ -15,12 +13,8 @@
 from xml.dom.minidom import getDOMImplementation
 
 
-if __name__ == "__main__":
-    base = sys.argv[0]
-else:
-    base = __file__
-tstfile = os.path.join(os.path.dirname(base), "xmltestdata", "test.xml")
-del base
+tstfile = findfile("test.xml", subdir="xmltestdata")
+
 
 # The tests of DocumentType importing use these helpers to construct
 # the documents to work with, since not all DOM builders actually
diff --git a/Lib/test/test_sax.py b/Lib/test/test_sax.py
index 22048e6..df7daf1 100644
--- a/Lib/test/test_sax.py
+++ b/Lib/test/test_sax.py
@@ -15,10 +15,9 @@
 from cStringIO import StringIO
 from test.test_support import findfile, run_unittest
 import unittest
-import os
 
-TEST_XMLFILE = findfile(os.path.join("xmltestdata", "test.xml"))
-TEST_XMLFILE_OUT = findfile(os.path.join("xmltestdata", "test.xml.out"))
+TEST_XMLFILE = findfile("test.xml", subdir="xmltestdata")
+TEST_XMLFILE_OUT = findfile("test.xml.out", subdir="xmltestdata")
 
 ns_uri = "http://www.python.org/xml-ns/saxtest/"
 
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
index c8aed4e..a8f9fbf7 100644
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -424,12 +424,14 @@
             rmtree(name)
 
 
-def findfile(file, here=__file__):
+def findfile(file, here=__file__, subdir=None):
     """Try to find a file on sys.path and the working directory.  If it is not
     found the argument passed to the function is returned (this does not
     necessarily signal failure; could still be the legitimate path)."""
     if os.path.isabs(file):
         return file
+    if subdir is not None:
+        file = os.path.join(subdir, file)
     path = sys.path
     path = [os.path.dirname(here)] + path
     for dn in path:
diff --git a/Lib/test/test_xml_etree.py b/Lib/test/test_xml_etree.py
index b99e42a..cdb9fdf 100644
--- a/Lib/test/test_xml_etree.py
+++ b/Lib/test/test_xml_etree.py
@@ -14,11 +14,12 @@
 import sys
 
 from test import test_support
+from test.test_support import findfile
 
 from xml.etree import ElementTree as ET
 
-SIMPLE_XMLFILE = "xmltestdata/simple.xml"
-SIMPLE_NS_XMLFILE = "xmltestdata/simple-ns.xml"
+SIMPLE_XMLFILE = findfile("simple.xml", subdir="xmltestdata")
+SIMPLE_NS_XMLFILE = findfile("simple-ns.xml", subdir="xmltestdata")
 
 SAMPLE_XML = """\
 <body>
@@ -1791,30 +1792,19 @@
 
 
 class CleanContext(object):
-    """Provide default namespace mapping, path cache and working directory.
+    """Provide default namespace mapping and path cache."""
 
-    Save and restore the default namespace mapping and the path cache.
-    Change directory to the "Lib/test/" directory: some tests open
-    xml files in the "samples/" directory relative to the test module.
-    """
     def __enter__(self):
-        import os
         from xml.etree import ElementTree
         self._nsmap = ElementTree._namespace_map
         self._path_cache = ElementTree.ElementPath._cache
-        self._previous_cwd = os.getcwd()
         # Copy the default namespace mapping
         ElementTree._namespace_map = self._nsmap.copy()
         # Copy the path cache (should be empty)
         ElementTree.ElementPath._cache = self._path_cache.copy()
-        # Change directory to Lib/test/
-        os.chdir(os.path.dirname(__file__))
 
     def __exit__(self, *args):
-        import os
         from xml.etree import ElementTree
-        # Restore working directory
-        os.chdir(self._previous_cwd)
         # Restore mapping and path cache
         ElementTree._namespace_map = self._nsmap
         ElementTree.ElementPath._cache = self._path_cache
