• webdriver之富文本,Firefox配置加载


    chrome驱动下载:http://chromedriver.storage.googleapis.com/index.html

    加载浏览器配置,需要用FirefoxProfile(profile_directory)这个类来加载,

    profile_directory既为浏览器配置文件的路径地址

    二、FirefoxProfile

    1.要想了解selenium里面API的用法,最好先看下相关的帮助文档打开cmd窗口,

    输入如下信息:
    -》python

    -》from selenium import webdriver

    -》help(webdriver.FirefoxProfile)

    Help on class FirefoxProfile in module

    selenium.webdriver.firefox.firefox_profile:

    class FirefoxProfile(builtin.object)
    | Methods defined here:
    |
    init(self, profile_directory=None)
    | Initialises a new instance of a Firefox Profile

    | :args:
    | - profile_directory: Directory of profile that you want to use.
    | This defaults to None and will create a new
    | directory when object is created.

    2.翻译过来大概意思是说,这里需要profile_directory这个配置文件路径的参数

    3.profile_directory=None,如果没有路径,默认为None,启动的是一个新的,

    有的话就加载指定的路径。

    三、profile_directory

    1.问题来了:Firefox的配置文件地址如何找到呢?
    
    2.打开Firefox点右上角设置>?(帮助)>故障排除信息>显示文件夹

    四、启动配置文件

    1.由于文件路径存在字符: ,反斜杠在代码里是转义字符,这个有点代码基础的应该都知道。
    2.遇到转义字符,为了不让转义,有两种处理方式:

    第一种: (前面再加一个反斜杠)

    第二种:r”"(字符串前面加r,使用字符串原型)

    
    
     1 from selenium import webdriver
     2 import time
     3 # 加载Firefox配置文件,可免登录
     4 profile_directory = r'C:Usersct-wylAppDataRoamingMozillaFirefoxProfileslt6n8ynh.default'
     5 profile = webdriver.FirefoxProfile(profile_directory)
     6 webdriver = webdriver.Firefox(profile)
     7 blogurl = 'https://www.cnblogs.com'
     8 yanrublog = blogurl + r'/FlyToDream'
     9 webdriver.get(yanrublog)
    10 # 点击新随笔
    11 webdriver.find_element_by_id('blog_nav_newpost').click()
    12 time.sleep(2)
    13 edittitle = u'pythong+selenium自动创建随笔'
    14 editbody = '这里是发帖区域,赶紧写下你的思绪'
    15 webdriver.find_element_by_id('Editor_Edit_txbTitle').send_keys(edittitle)
    16 # 第一种写法:通过切换iframe
    17 # iframe = webdriver.find_element_by_id('Editor_Edit_EditorBody_ifr')
    18 # webdriver.switch_to.frame(iframe)
    19 # webdriver.find_element_by_id('tinymce').send_keys(editbody)   # 富文本区输入内容
    20 # webdriver.switch_to.default_content()
    21 # 第二种,通过js编辑富文本内容
    22 js = 'document.getElementById("Editor_Edit_EditorBody_ifr").contentWindow.document.body.innerHTML="%s"'%editbody
    23 webdriver.execute_script(js)
    24 webdriver.find_element_by_id('Editor_Edit_lkbPost').click()   #发布
    
    
    
     



  • 相关阅读:
    python 基础2.5 循环中continue与breake用法
    python 基础 2.4 while 循环
    python 基础 2.3 for 循环
    python 基础 2.2 if流程控制(二)
    python 基础 2.1 if 流程控制(一)
    python 基础 1.6 python 帮助信息及数据类型间相互转换
    python 基础 1.5 python数据类型(四)--字典常用方法示例
    Tornado Web 框架
    LinkCode 第k个排列
    LeetCode 46. Permutations
  • 原文地址:https://www.cnblogs.com/FlyToDream/p/10734613.html
Copyright © 2020-2023  润新知