expected_conditions类提供的预期条件判断方法实例

 presence_of_element_located(locator):判断元素是否被加在DOM树里,并不代表该元素一定可见

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 
driver=webdriver.Chrome()
driver.get("http://www.iciba.com/")
myDynamicElement='//*[@id="app"]/div/div[2]/div/h1'
try:
#查看10秒内是否出现该元素,如果元素10秒内出现就返回,否则抛出异常。
    element=WebDriverWait(driver,10).until(
        EC.presence_of_element_located((By.XPATH,myDynamicElement))
    )
finally:
    driver.quit()

最初执行的代码一开始是这样写:presence_of_element_located(By.ID,"su"),这样相当于取到了3个参数(self, By.ID, "su")
presence_of_element_located类中__init__()方法取的确实是2个参数(self, locator),其中locator调用的是一个tuple(元组)
该元组(By.ID,"su")作为一个整体,对应相当于1个参数,加上类实例化代表自身的self参数,正好就是2个参数
因此,执行代码正确的写法为:presence_of_element_located((By.ID,"su")),即需要嵌套两层英文圆括号

 

element_to_be_selected(element):判断某个元素是否被选中,一般用在下拉列表

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
import time

driver = webdriver.Chrome()
driver.get("http://202.105.30.27/ILASOPAC/ReaderLogin.do")
driver.maximize_window()
# 设置明确等待
wait = WebDriverWait(driver, 20, 0.5)
#判断是否点击----记住我
element = wait.until(EC.element_to_be_selected((driver.find_element_by_xpath("html/body/section/div[3]/div/div[1]/form/ul/li[4]/input"))))
time.sleep(1)
driver.close()

element_selection_state_to_be(element):判断某个元素的选中状态是否符合预期

element_located_selection_state_to_be(locator):判断某个元素的选中状态是否符合预期,与上一个方法作用相同,只是上一个方法参数为定位后的元素,该方法接收的参数为定位。

import time
from selenium import webdriver
driver = webdriver.Chrome(r'D:\zhusc\chromedriver.exe')
driver.get("http://202.105.30.27/ILASOPAC/NTRdrLogin.do")
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver.maximize_window() #窗口最大化
#选框未被选中
def missSelect(str):   
    wait = WebDriverWait(driver,10)
    wait.until(EC.element_selection_state_to_be(driver.find_element_by_xpath(str),False))
    driver.find_element_by_xpath(str).click()
missSelect("/html/body/section/div[3]/div/div[1]/form/ul/li[4]/input")
time.sleep(2)
driver.quit()

text_to_be_present_in_element(locator,text):判断某个元素中的text是否包含预期的字符串

ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"

locator=("link text","确定")
text="确定"
try:
    #查看10秒内是否出现该元素,如果元素10秒内出现就返回,否则抛出异常。
        element=WebDriverWait(driver,10).until(
            EC.text_to_be_present_in_element(locator,text)
        )
finally:
    driver.find_element_by_xpath("/html/body/div[69]/div[2]/div[3]/a").click()

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值