示例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()

说明:

示例代码比较简单,就不在一一解释,主要覆盖了几种元素定位方式,可能在页面中找这些元素定位的特征反而比较费劲。

上一篇selenium-Sample(三) 下一篇selenium-Sample(五)

by 李鹏