示例10 不同等待方法示例
等待方法包括多种策略,具体参见前面文章。
示例代码:
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 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 | #!/bin/bash/env python
# *-* coding:utf-8 *-*
import sys
import unittest
from subprocess import call
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
reload(sys)
sys.setdefaultencoding('utf8')
testurl = "https://www.baidu.com/"
testurl1 = "http://192.168.32.3/"
class TestWait(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
# presence_of_element_located方法
def test_byID(self):
driver = self.driver
driver.get(testurl)
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "kw"))
)
print("Wait by presence_of_element_located sucessfull")
except:
print("Wait by presence_of_element_located failed")
# title_is 方法
def test_byTitle(self):
driver = self.driver
driver.get(testurl)
try:
element = WebDriverWait(driver, 10).until(
EC.title_is('百度一下,你就知道'))
print("Wait by title_is sucessfull")
except:
print("Wait by title_is failed")
def test_byTitlecontains(self):
driver = self.driver
driver.get(testurl)
try:
element = WebDriverWait(driver, 10).until(
EC.title_contains('百度'))
print("Wait by title_contains sucessfull")
except:
print("Wait by title_contains failed")
def test_byname(self):
driver = self.driver
driver.get(testurl)
try:
element = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.NAME, "wd"))
)
print("Wait by visibility_of_element_located sucessfull")
except:
print("Wait by visibility_of_element_located by name failed")
def test_byelement(self):
driver = self.driver
driver.get(testurl)
elem = driver.find_element_by_name("wd")
try:
element = WebDriverWait(driver, 10).until(
EC.visibility_of(elem))
print("Wait by visibility_of sucessfull")
except:
print("Wait by visibility_of failed")
def test_bypresenceelements(self):
driver = self.driver
driver.get(testurl)
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_all_elements_located((By.NAME, "wd"))
)
print("Wait by presence_of_all_elements_located sucessfull")
except:
print("Wait by presenceelements failed")
def test_bytextinelement(self):
driver = self.driver
driver.get(testurl)
try:
element = WebDriverWait(driver, 10).until(
EC.text_to_be_present_in_element((By.NAME, "tj_trhao123"), "hao123"))
print("Wait by text_to_be_present_in_element sucessfull")
except:
print("Wait by text_to_be_present_in_element failed")
def test_bytextvalue(self):
driver = self.driver
driver.get(testurl)
try:
element = WebDriverWait(driver, 10).until(
EC.text_to_be_present_in_element_value((By.ID, "su"), "百度一下"))
print("Wait by text_to_be_present_in_element_value sucessfull")
except:
print("Wait by text_to_be_present_in_element_value failed")
def test_byframe(self):
driver = self.driver
driver.get(testurl)
try:
element = WebDriverWait(driver, 10).until(
EC.frame_to_be_available_and_switch_to_it((By.NAME, "tj_trhao123")))
print("Wait by frame_to_be_available_and_switch_to_it sucessfull")
except:
print("Wait by frame_to_be_available_and_switch_to_it failed")
def test_byinvisibility(self):
driver = self.driver
driver.get(testurl)
try:
element = WebDriverWait(driver, 10).until(
EC.invisibility_of_element_located((By.NAME, "tj_trha")))
print("Wait by invisibility_of_element_located sucessfull")
except:
print("Wait by invisibility_of_element_located failed")
def test_byclickable(self):
driver = self.driver
driver.get(testurl)
try:
element = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.ID, "su")))
print("Wait by element_to_be_clickable sucessfull")
except:
print("Wait by element_to_be_clickable failed")
def test_bystaleness(self):
driver = self.driver
driver.get(testurl)
elem = driver.find_element_by_id("su")
try:
element = WebDriverWait(driver, 10).until(
EC.staleness_of(elem))
print("Wait by staleness_of failed")
except:
print("Wait by staleness_of sucessfull")
def test_bybeselected(self):
driver = self.driver
driver.get(testurl1)
driver.find_element_by_id('query').click()
if EC.presence_of_element_located((By.ID, "short_desc")):
driver.find_element_by_xpath("//*[@id='tab_specific']/a").click()
elem = driver.find_element_by_xpath("//*[@id='product']/option[1]")
try:
elemnt = WebDriverWait(driver, 10).until(
EC.element_to_be_selected(elem))
print("Wait by element_to_be_selected sucessfull")
except:
print("Wait by element_to_be_selected failed")
def test_bylocatedselected(self):
driver = self.driver
driver.get(testurl1)
driver.find_element_by_id('query').click()
if EC.presence_of_element_located((By.ID, "short_desc")):
driver.find_element_by_xpath("//*[@id='tab_specific']/a").click()
try:
element = WebDriverWait(driver, 10).until(
EC.element_located_to_be_selected((By.XPATH,
"//*[@id='product']/option[1]")))
print("Wait by element_located_to_be_selected sucessfull")
except:
print("Wait by element_located_to_be_selected failed")
def test_byselectionstate(self):
driver = self.driver
driver.get(testurl1)
driver.find_element_by_id('query').click()
if WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID, "bug_status"))):
driver.find_element_by_id("tab_advanced").click()
driver.find_element_by_xpath("//*[@id='negate0']").click()
try:
elem = driver.find_element_by_xpath("//*[@id='custom_search_filter_section']/table/tbody/tr[1]/td/label")
element = WebDriverWait(driver, 10).until(
EC.element_selection_state_to_be(elem, True))
print("Wait by element_selection_state_to_be sucessfull")
except:
print("Wait by element_selection_state_to_be failed")
def test_bylocatedstate(self):
driver = self.driver
driver.get(testurl1)
driver.find_element_by_id('query').click()
if EC.presence_of_element_located((By.ID, "bug_status")):
driver.find_element_by_id("tab_advanced").click()
driver.find_element_by_xpath("//*[@id='negate0']").click()
try:
element = WebDriverWait(driver, 10).until(
EC.element_located_selection_state_to_be((By.XPATH,
"//*[@id='negate0'")))
print("Wait by element_located_selection_state_to_be sucessfull")
except:
print("Wait by element_located_selection_state_to_be failed")
def test_byisalert(self):
driver = self.driver
driver.get(testurl1)
driver.find_element_by_id("find").click()
try:
element = WebDriverWait(driver, 10).until(
EC.alert_is_present())
element.accept()
print("Wait by alert_is_present sucessfull")
except:
print("Wait by alert_is_present failed")
def test_byimplicitly(self):
driver = self.driver
driver.implicitly_wait(20)
call("date", shell=True)
driver.get(testurl1)
try:
driver.find_element_by_id("test")
except:
pass
call("date", shell=True)
def tearDown(self):
self.driver.close()
if __name__ == "__main__":
unittest.main()
|
示例中覆盖了expected_condition类中的大部分等待方式。包括title_is 、title_contains、presence_of_element_located、visibility_of_element_located、visibility_of、presence_of_all_elements_located、text_to_be_present_in_element、text_to_be_present_in_element_value、frame_to_be_available_and_switch_to_it、invisibility_of_element_located、element_to_be_clickable-it is Displayed and Enabled、staleness_of、element_to_be_selected、element_located_to_be_selected、element_selection_state_to_be、element_located_selection_state_to_be、alert_is_present 及implicitly_wait.
下一篇会研究一下expected_condition中各个类的实现。