zoukankan      html  css  js  c++  java
  • selenium基本使用

    1. 基本元素操作和选取
      https://blog.csdn.net/weixin_41931602/article/details/82754743

    2. 等待

    # 等待视频结束按钮
    end_button = browser.find_element_by_css_selector(".btn.btn-primary:not(.btnSubmitQuestion)")
    is_visible  = WebDriverWait(browser, 60*60).until(lambda driver: end_button.is_displayed())
    if is_visible:
        end_button.click()
    
    
    1. 什么是显示等待和隐式等待?
    等待显示就是有条件的等待
    隐式等待就是无条件的等待
    
    当使用了隐式等待执行测试的时候,如果WebDriver没有在DOM中找到元素,将继续等待,超出设定时间后则抛出找不到元素的异常,
    换句话说,当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找DOM,默认的时间是0
    from selenium import webdriver
    
    browser = webdriver.Chrome()
    browser.implicitly_wait(10)  # 等待十秒加载不出来就会抛出异常,10秒内加载出来正常返回
    browser.get('https://www.zhihu.com/explore')
    input = browser.find_element_by_class_name('zu-top-add-question')
    print(input)
    
    
    指定一个等待条件,和一个最长等待时间,程序会判断在等待时间内条件是否满足,如果满足则返回,如果不满足会继续等待,超过时间就会抛出异常
    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
    
    browser = webdriver.Chrome()
    browser.get('https://www.taobao.com/')
    wait = WebDriverWait(browser, 10)
    input = wait.until(EC.presence_of_element_located((By.ID, 'q')))
    button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.btn-search')))
    print(input, button)
    
    
    # 用户名输入框
    username_Input = (By.ID, 'username')
    # 密码输入框
    pwd_Input = (By.ID, 'password')
    # 登录按钮
    login_btn = (By.TAG_NAME, 'button')
    # 首页的“新建投放计划”按钮
    new_ads_plan = (By.XPATH, "//span[text()='新建投放计划']")
    
    
    
    1. 常用汇总
    
    # 经验
    # video_list =  browser.find_elements_by_class_name("f-ib w100 text-etc") # class复合属性不支持这么写
    # video_list = browser.find_elements_by_css_selector(".f-ib .w100 .text-etc")  # css中间也不能写空格的
    video_list = browser.find_elements_by_css_selector(".f-ib.w100.text-etc")  # css 支持找类class
    # 解决点击第一个a之后,页面出现刷新,再想点第二个就会报错
    video_num = len(video_list)
    
    
    
    # 寻找单个节点的多有方法,返回的结果是WebElement类型的
    # 如果是找多个节点,在element后面加s,结果是列表类型
    '''
    browser.find_element_by_id()
    browser.find_element_by_name()
    browser.find_element_by_xpath()
    browser.find_element_by_tag_name()
    browser.find_element_by_link_text()
    browser.find_element_by_class_name()
    browser.find_element_by_css_selector()
    browser.find_element_by_partial_link_text()
    '''
    
    
    # 方法
    '''
    input = browser.find_element_by_id('kw')
    input.send_keys('许嵩')
    time.sleep(3)
    input.clear()
    input.send_keys('python')
    input.send_keys(Keys.ENTER)
    # button = browser.find_element_by_class_name('btn self_btn')
    # button.click()
    '''
    
    
    
  • 相关阅读:
    计算机网络学习笔记:第九章.无线网络
    计算机网络学习笔记:第七章.网络安全与攻防
    seq命令的使用
    rm--删除文件或目录
    tar命令-解压和压缩文件
    CentOS最小化安装后找不到ifconfig命令
    shell 字符菜单管理
    linux passwd批量修改用户密码
    Linux shell 判断字符串为空等常用命令
    Linux 中find命令
  • 原文地址:https://www.cnblogs.com/amize/p/14424418.html
Copyright © 2011-2022 走看看