zoukankan      html  css  js  c++  java
  • selenium3 + python

    一、Select模块(index)

        1.导入Select模块。直接根据属性或索引定位
        2.先要导入select方法:from selenium.webdriver.support.select import Select
        3.然后通过select选项的索引来定位选择对应选项(从0开始计数),如选择第三个选项:select_by_index(2)
    select_by_index()  :通过索引定位
    select_by_value()  :通过value值定位
    select_by_visible_text() :通过文本值定位
    deselect_all()          :取消所有选项
    deselect_by_index()     :取消对应index选项
    deselect_by_value()      :取消对应value选项
    deselect_by_visible_text() :取消对应文本选项
    first_selected_option()  :返回第一个选项
    all_selected_options()   :返回所有的选项

    二、select遇到的坑

        1.在操作百度设置里面,点击“保存设置”按钮时,alert弹出框没有弹出来。(Ie浏览器是可以的)

        2.分析原因:经过慢慢调试后发现,在点击"保存设置"按钮时,由于前面的select操作后,失去了焦点

        3.解决办法:在select操作后,做个click()点击操作


    代码整理如下:
    from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    from selenium.webdriver.support.select import Select
    import time as t
    driver = webdriver.Chrome()
    url = "https://www.baidu.com"
    driver.get(url)
    driver.implicitly_wait(10)
    # 鼠标移动到“设置”按钮
    mouse = driver.find_element_by_link_text("设置")
    ActionChains(driver).move_to_element(mouse).perform()
    driver.find_element_by_link_text("搜索设置").click()
    # 通过text:select_by_visible_text()
    s = driver.find_element_by_id("nr")
    Select(s).select_by_visible_text("每页显示50条")
    t.sleep(3)
    s.click()
    driver.find_element_by_link_text("保存设置").click()
    t.sleep(2)
    #获取alert弹框
    t = driver.switch_to_alert()
    print(t.text)
    t.accept()


    # # 分两步:先定位下拉框,再点击选项
    # s = driver.find_element_by_id("nr")
    # s.find_element_by_xpath("//option[@value='50']").click()

    # # 另外一种写法
    # driver.find_element_by_id("nr").find_element_by_xpath("//option[@value='50']").click()

    # # 直接通过xpath定位
    # driver.find_element_by_xpath(".//*[@id='nr']/option[2]").click()

    # # 通过索引:select_by_index()
    # s = driver.find_element_by_id("nr")
    # Select(s).select_by_index(2)

    # # 通过value:select_by_value()
    # s = driver.find_element_by_id("nr")
    # Select(s).select_by_value("20")

    参考链接:https://www.cnblogs.com/yoyoketang/p/6128636.html
  • 相关阅读:
    day22 os模块
    开始 Dojo 开发
    Java 多线程编程
    Oracle 中常用数据字典大总结
    使用Java API的5个技巧
    Java 守护线程概述
    给Java新手的一些建议——Java知识点归纳(Java基础部分)
    消息中间件收录集
    2017年Java面试题整理
    Java 9 新特性快速预览
  • 原文地址:https://www.cnblogs.com/Teachertao/p/10970625.html
Copyright © 2011-2022 走看看