示例9 各种元素定位方法
下面的例子将展示webdriver 元素定位的几种方式。包括id、name、xpath、link_tetx、partial_link_text、tag_name、class_name、css_selector等。
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | #!/bin/bash/env python
# *-* coding: utf-8 *-*
import unittest
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
testurl = "http://192.168.32.3/"
class ElementLocal(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
def localbyid(self, iddriver, idvalue):
return iddriver.find_element_by_id(idvalue)
def localbyname(self, namedriver, namevalue):
return namedriver.find_element_by_name(namevalue)
def localbyxpath(self, xpathdriver, xpathvalue):
return xpathdriver.find_element_by_xpath(xpathvalue)
def localbylinktext(self, linkdriver, linktextvalue):
return linkdriver.find_element_by_link_text(linktextvalue)
def localbyclassname(self, classdriver, classnamevalue):
return classdriver.find_element_by_class_name(classnamevalue)
def localbytagname(self, tagdriver, tagnamevalue):
return tagdriver.find_element_by_tag_name(tagnamevalue)
def localbycssselector(self, cssdriver, cssvalue):
return cssdriver.find_elements_by_css_selector(cssvalue)[1]
def localbypartiallink(self, partialdriver, partialvalue):
return partialdriver.find_element_by_partial_link_text(partialvalue)
def dosearch(self, element, searchvalue):
element.clear()
element.send_keys(searchvalue)
element.send_keys(Keys.RETURN)
def test_localmethod(self):
driver = self.driver
driver.get(testurl)
self.assertIn("Bugzilla Main Page", driver.title)
search = self.localbyid(driver, "quicksearch_main")
self.dosearch(search, "11023")
self.assertIn("11023", driver.title)
namedriver = self.localbynametest(driver)
xpathdriver = self.localbyxpathtest(namedriver)
linkdriver = self.localbylinktexttest(xpathdriver)
classdriver = self.localbyclassnametest(linkdriver)
tagdriver = self.localbytagnametest(classdriver)
cssdriver = self.localbycsstest(tagdriver)
self.localbypartiallinktest(cssdriver)
def localbynametest(self, driver):
search = self.localbyname(driver, "quicksearch")
self.dosearch(search, "11024")
self.assertIn("11024", driver.title)
time.sleep(3)
return driver
def localbyxpathtest(self, driver):
search = self.localbyxpath(driver, "//*[@id='quicksearch_top']")
self.dosearch(search, "11025")
self.assertIn("11025", driver.title)
time.sleep(3)
return driver
def localbylinktexttest(self, driver):
home = self.localbylinktext(driver, "Home")
home.click()
time.sleep(3)
return driver
def localbyclassnametest(self, driver):
search = self.localbyclassname(driver, "txt")
self.dosearch(search, "11026")
self.assertIn("11026", driver.title)
time.sleep(3)
return driver
def localbytagnametest(self, driver):
title = self.localbytagname(driver, "a")
title.click()
time.sleep(3)
return driver
def localbycsstest(self, driver):
search = self.localbycssselector(driver, "a.bz_common_actions")
search.click()
time.sleep(3)
return driver
def localbypartiallinktest(self, driver):
sample = self.localbypartiallink(driver, "Hom")
sample.click()
time.sleep(3)
def tearDown(self):
self.driver.close()
if __name__ == "__main__":
unittest.main()
|
说明:
示例代码比较简单,就不在一一解释,主要覆盖了几种元素定位方式,可能在页面中找这些元素定位的特征反而比较费劲。