添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
体贴的可乐  ·  read_kafka 表值函数 - ...·  8 月前    · 
有腹肌的电影票  ·  How do I enable ...·  1 年前    · 
活泼的枕头  ·  Persistent Volume ...·  1 年前    · 
browser.get( " http://www.baidu.com/ " ) time.sleep( 5 ) browser.get( " https://mail.163.com/ " ) browser.quit()

使用implicitly_wait设置最长等待时间

import time
from selenium import webdriver
browser = webdriver.Edge()
browser.implicitly_wait(10)
browser.get("http://www.baidu.com/")
time.sleep(5)
browser.quit()
browser = webdriver.Chrome() browser.implicitly_wait( 10 ) browser.get( " http://www.baidu.com/ " ) time.sleep( 5 ) # 定位搜索框 input_text = browser.find_element(By.ID, ' kw ' ) # 在搜索框中输入内容 input_text.send_keys( ' selenium ' ) time.sleep( 5 ) browser.quit()

可以通过name属性定位:

  • find_element(By.NAME,'xx') name定位,根据元素的name属性值定位,定位到的标签不一定是唯一的。
  • 可以通过class属性定位:

  • find_element_by(By.CLASS_NAME,'xx') class定位,根据元素的class属性值定位,但可能受JS影响动态变化。定位到的标签不一定是唯一的。
  • 可以通过tag标签定位:

  • find_element(By.TAG_NAME,'xx') tag name定位,根据元素的标签名定位,定位到的标签不一定是唯一的。
  • 可以通过link定位:

  • link 表示包含有属性 href 的标签元素,如: <a href="https://www.csdn.net">linktext</a> 可以通过 LINK_TEXT 进行定位。
  • find_element(By.LINK_TEXT,'XX') 根据链接文本全匹配进行精确定位。
  • find_element(By.PARTIAL_LINK_TEXT,'XX') 根据链接文本模糊匹配进行定位。
  • 可以通过xpath定位:

    xpath 是一种在XML文档中定位元素的语言

    可以通过css选择器定位:

  • find_element(By.CSS_SELECTOR,'XX') 根据元素的css选择器来完成定位,可以准确定位任何元素,但需要熟练掌握css选择器
  • css 选择器
  • 几种方式定位的区别:

    定位是否唯一 返回值类型 id属性定位 element

    只有标签有id属性时才能使用

    name属性定位 可能不唯一

    element或elements列表

    只有标签有name属性时才能使用

    class属性定位 可能不唯一 element或elements列表 只有标签有class属性时才能使用 tag定位 可能不唯一 element或elements列表 通常得到的都是一组列表 link_text精确定位 可能不唯一 element或elements列表 只有存在link_text相同时, 才得到列表 link_text模糊定位 可能不唯一 element或elements列表 一般用于定位<a></a>标签 xpath定位 可能不唯一 element或elements列表 一般用来做精准定位,用/表示元素层级关系,xpath属性定位值必须加引号 css选择器定位 可能不唯一 element或elements列表

    一般用作精确定位,用>或空格表示元素层级关系,属性值可以不加引号

    browser = webdriver.Chrome() browser.implicitly_wait( 10 ) browser.get( " http://www.baidu.com/ " ) time.sleep( 5 ) # 定位搜索框 input_text = browser.find_element(By.ID, ' kw ' ) # 通过Xpath定位搜索框并输入内容查询 browser.find_element(By.XPATH, ' //*[@id="kw"] ' ).send_keys( ' selenium ' ) input_text.submit() time.sleep( 3 ) browser.quit()

    获取页面内容

    import time
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    browser = webdriver.Chrome()
    browser.implicitly_wait(10)
    browser.get("http://www.baidu.com/")
    time.sleep(5)
    title = browser.title
    print(title)
    source_code = browser.page_source
    print(source_code)
    url = browser.current_url
    print(url)
    text = browser.find_element(By.XPATH, '//*[@id="s-top-left"]').text
    print(text)
    time.sleep(3)
    browser.quit()

    调整浏览器尺寸大小

    import time
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    browser = webdriver.Chrome()
    browser.implicitly_wait(10)
    browser.get("http://www.baidu.com/")
    time.sleep(5)
    browser.minimize_window()
    time.sleep(2)
    browser.maximize_window()
    time.sleep(3)
    browser.quit()

    前进一页,后退一页

    .forward()
    .back()

    页面刷新

    .refresh()

    窗口切换

    current_window_handle获取当前窗口的句柄
    window_handles获取所有打开页面的句柄,是一个列表
    switch_to.window(“XX”)切换到指定页面,XX代表页面句柄
    switch_to.frame(XX)切换到内敛框架页面,XX代表内联框架标签的定位对象
    swith_to.parent_frame()切回到内敛框架的上一级,即从内敛框架切出
    switch_to.alert切换到页面弹窗

    下拉列表操作

    import time
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.select import Select
    browser = webdriver.Chrome()
    browser.implicitly_wait(10)
    browser.get("file:///D:/3-项目/Projects/Practise/For_test/learning_selenium.html")
    time.sleep(5)
    select = Select(browser.find_element(By.TAG_NAME, 'select'))
    select.select_by_value("Python")
    time.sleep(2)
    select.select_by_visible_text("C++")
    time.sleep(2)
    select.select_by_index(0)
    time.sleep(2)
    for i in select.options:
        i.click()
        time.sleep(2)
    time.sleep(3)
    browser.quit()

    弹窗操作

    switch_to.alert获取弹窗对象。
    text弹窗内容
    accept()接受弹窗
    dismiss()取消弹窗

    鼠标操作

    鼠标操作需要的类:ActionChain
    move_to_element(X)鼠标悬停,X代表定位到的标签
    double_click(X)双击
    context_click(X)右击
    perform() 执行所有存储在ActionChains()类中的行为,做最终的提交

    不管执行哪个方法,最后都要调用 perform() 方法,将操作呈现出来。

    import time
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.action_chains import ActionChains
    from selenium.webdriver.support.select import Select
    browser = webdriver.Chrome()
    browser.implicitly_wait(10)
    browser.get('https://www.baidu.com/')
    browser.maximize_window()
    time.sleep(3)
    # 创建对象
    action = ActionChains(browser)
    action.move_by_offset(10, 50).perform()
    time.sleep(2)
    # 定位标签,移动鼠标
    tag = browser.find_element(By.XPATH, '//*[@id="kw"]')
    action.move_to_element(tag).perform()
    time.sleep(2)
    tag.send_keys('python')
    tag2 = browser.find_element(By.XPATH, '//*[@id="su"]')
    action.move_to_element(tag2).click().perform()
    time.sleep(3)
    browser.quit()

    键盘操作

    send_keys(Keys.BACK_SPACE)执行删除键Backspace
    send_keys(Keys.CONTROL,'a')全选
    send_keys(Keys.CONTROL,'x')剪切
    send_keys(Keys.CONTROL,'c')复制
    send_keys(Keys.CONTROL,'v')粘贴
    send_keys(Keys.SPACE): 空格键(Space)
    send_keys(Keys.TAB): 制表键(Tab)
    send_keys(Keys.ESCAPE): 回退键(Esc)
    send_keys(Keys.ENTER): 回车键(Enter)
    send_keys(Keys.F1): 键盘 F1