首页 > 其他分享 >selenium(2) wait & page objects

selenium(2) wait & page objects

时间:2022-10-11 15:34:00浏览次数:43  
标签:webdriver selenium driver page objects element class css

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.Firefox()
driver.get("http://somedomain/url_that_delays_loading")
try:
    element = WebDriverWait(driver, 10).until(    //使用 WebDriverWait()来等待  最多等10秒来等待找到指定条件的元素, 超时未找到抛出TimeoutException
        EC.presence_of_element_located((By.ID, "myDynamicElement"))
    )
finally:
    driver.quit()

 其他的EC方法 用于自动化浏览器

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

例如:
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.ID, 'someid')))
 

也可创建自定义等待条件。可以使用带有__call__方法的类创建自定义等待条件,当条件不匹配时,该方法将返回False。

 1 class element_has_css_class(object):  //自定义的方法
 2   """An expectation for checking that an element has a particular css class.
 3 
 4   locator - used to find the element
 5   returns the WebElement once it has the particular css class
 6   """
 7   def __init__(self, locator, css_class):
 8     self.locator = locator
 9     self.css_class = css_class
10 
11   def __call__(self, driver):
12     element = driver.find_element(*self.locator)   # Finding the referenced element
13     if self.css_class in element.get_attribute("class"):
14         return element
15     else:
16         return False
17 
18 # Wait until an element with id='myNewInput' has class 'myCSSClass'
19 wait = WebDriverWait(driver, 10)
20 element = wait.until(element_has_css_class((By.ID, 'myNewInput'), "myCSSClass"))  // 先通过 init方法 call 方法

3.默认等待

1 from selenium import webdriver
2 
3 driver = webdriver.Firefox()
4 driver.implicitly_wait(10) # seconds
5 driver.get("http://somedomain/url_that_delays_loading")
6 myDynamicElement = driver.find_element_by_id("myDynamicElement")

 

标签:webdriver,selenium,driver,page,objects,element,class,css
From: https://www.cnblogs.com/shaitaiyang/p/16778301.html

相关文章

  • python + selenium 新手随笔 元素定位
    1.fromseleniumimportwebdriverfromselenium.webdriver.common.keysimportKeys//Key表示键盘上的键,By定位文本中的元素fromselenium.webdriver.common.by......
  • page.json
    uni-app需要给page.json文件需要进行配置路由,否则会不报错,也跳转不过去......
  • Github Pages 和 Hexo 搭建自己的博客
    title:GithubPages和Hexo搭建自己的博客excerpt:hexoblog来了~tags:[hexo,blog,githubpages]categories:[学习,git][学习,hexo]index_img:https://......
  • 【测试】Selenium录制单元测试脚本
    因业务性质发生变化,公司有要求做业务测试自动化用以替代人工进行可重复执行操作。基于学习曲线比较平缓且容易上手考虑,最终选择了Selenium作为自动化测试框架。安装Selenium......
  • Spring Boot + Thymeleaf 使用PageHelper实现分页
    一、概述使用分页插件来实现分页功能。好处是,分页条你可以自行排版,不受页面约束。(前端使用的是thymeleaf)我使用的是springboot2.1.11.RELEASE,如果按照以下步骤不能实现分......
  • selenium webdriver 无法选中元素,修改元素属性可见
    <uldata-v-6529428e=""class="el-dropdown-menuel-popperfilter-dropdownel-dropdown-menu--medium"id="dropdown-menu-5584"style="transform-origin:centertop;......
  • web_page
    fromseleniumimportwebdriverfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasECclassWeb_......
  • 直播平台怎么搭建,ViewPager实现引导动画的效果
    直播平台怎么搭建,ViewPager实现引导动画的效果1.布局文件布局文件很简单就添加一个viewpager控件即可,当然还有一个更新的控件是viewpager2,不过是新学我们从viewpager开始......
  • Page Rank: Graph as Matrix
    PageRank:GraphasMatrix在google中,会对页面的重要性进行排序,这节课就是讲的pagerank及相关引申。前置知识--马尔可夫矩阵马尔科夫矩阵(MarkovMatrices)的定义:矩......
  • python+selenium做ui自动化测试用法必会
    python+selenium做ui自动化测试用法必会一、前言大家都知道,基于Web端的测试的基础框架是需要Selenium做主要支撑的,这里边给大家介绍下Web测试核心之基于Python的Sele......