• SF-登录**环境并下载数据 --遇到问题汇总:


    1.驱动
    driver = webdriver.Firefox()

    F需要大写

    2.设置控件属性:

    js查找元素
    带不带s
    js = 'document.getElementById("loginWrap").className="showtab2"'

    getElement 带s 时是列表

    3.元素赋值
    js = 'document.getElementById("loginWrap").className="showtab2"'

    class 找不到,必须为 className

    4.页面跳转后定位不到元素 ==等待时间不够

    5.定位到元素后,提示:element is not reachable by keyboard 无法键盘操作该元素
    解决方案:找到元素后,点击激活,然后输入对应参数
    element = driver.find_element_by_css_selector('#searchDiv > div:nth-child(1) > span')
    element.click()
    time.sleep(1)
    driver.switch_to.active_element.send_keys('admin')

    6.设置火狐浏览器不弹框提醒
    profile = webdriver.FirefoxProfile()
    profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream")

    driver = webdriver.Firefox(profile)

    代码实现: 

    class Login:
        def __init__(self, host_pd):
            self.host_pd = host_pd
    
        def __login__(self):
            # 火狐浏览器设置不弹框提醒
            profile = webdriver.FirefoxProfile()
            profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream")
            driver = webdriver.Firefox(profile)
            # 获取生产相关参数
            #  实例化configParser对象
            config = configparser.ConfigParser()
            # 当前文件夹的父文件夹,并用‘/’分隔
            pathlsit = os.path.dirname(os.path.dirname(__file__)).split('/')
            # 获取配置对应文件的具体位置
            pathstr = '\\'.join(pathlsit) + '\\Config\\myapp.ini'
            # print(pathstr)
            # -read读取ini文件
            config.read(pathstr, encoding='utf-8')
            # 获取相关参数
            self.url = config.get(self.host_pd, 'url')
            self.username = config.get(self.host_pd, 'username')
            self.passwd = config.get(self.host_pd, 'passwd')
            self.road = config.get('download_road', 'road')
            # print(self.road)
            # print(self.road.strip("'") + 'imgcode.png')
    
            # 访问网址
            driver.get(self.url)
            time.sleep(0.5)
            js = 'document.getElementById("loginWrap").className="showtab2"'
            driver.execute_script(js)
            time.sleep(0.5)
            # 输入账号
            driver.find_element_by_id('username').send_keys(self.username)
            # 输入密码
            driver.find_element_by_id('password').send_keys(self.passwd)
            # 获取校验码图片
            filepath = self.road.strip("'") + 'imgcode.png'
            driver.find_element_by_id('imgcode').screenshot(filepath)
            code = verifycode(filepath)
            driver.find_element_by_id('verifyCode').send_keys(code)
            driver.find_element_by_id('verifyCode').send_keys(Keys.ENTER)
            time.sleep(3)
            os.remove(filepath)
            return driver
  • 相关阅读:
    break return continue
    爬虫---请求
    pycharm加开头注释
    爬虫---入门
    pip
    XML基础
    英语
    布局
    adobe
    StackOverflow
  • 原文地址:https://www.cnblogs.com/like1824/p/15075727.html
Copyright © 2020-2023  润新知