美文网首页我爱编程
处理selenium Chrome相关操作的几个问题

处理selenium Chrome相关操作的几个问题

作者: 步履不停的Suunny | 来源:发表于2018-05-24 21:08 被阅读0次

    问题1

    如何查找iframe中的元素

    发票查验成功后,会进入到发票详情界面,此界面发票数据是内嵌到iframe中的,通过常规方法无法获取到页面元素,需要处理下iframe。
    方法如下:
    在查找页面元素前,切换到iframe框架,

    from selenium import webdriver
    driver =  webdriver.Chrome()  # 注意,此处Chrome的C是大写的,写成小写不报错,但其实是错误的 
    driver.switch_to.frame('iframe元素ID')  # 此处iframe元素id是 dialog-body
    #切换iframe后可以查找元素
    driver.find_element_by_id(element_ID)
    driver.find_element_by_xpath(element_xpath)
    
    image.png

    问题2

    特殊字符串不能显示,如何处理 ?
    通过logger模块打印发票的大写金额,前面有一个特殊字符⊗,如下图:

    image.png

    因为这里获取到的字符串,特殊字符是没有意义的,将其去掉即可。

    如获取到 jshjdx_zp = '⊗柒万叁仟伍佰零贰圆玖角柒分'
    通过字符串切片方法,去掉⊗, 即jshjdx_zp[1:]

    image.png

    问题3

    捕获元素获取异常
    HTML元素获取成功, 会返回元素信息,如果获取失败,会抛出异常。

    如果判断元素是否获取成功,可以使用下面方法:

     try:
        self.mBrowser.find_element_by_xpath(strXpathID)
        return True
    except:
        return False
    

    如果想捕获特定的异常,可以导入selenium相关异常的包后,进行异常捕获,如下:

    from selenium import webdriver
    from selenium.common.exceptions import NoSuchElementException
    
    driver =  webdriver.Chrome() 
    #定义元素是否存在函数
    def isExistElementByXpath(strXpathID)
    try:
        driver.find_element_by_xpath(strXpathID)
        return True
    except NoSuchElementException as msg:
        return False
    

    相关文章

      网友评论

        本文标题:处理selenium Chrome相关操作的几个问题

        本文链接:https://www.haomeiwen.com/subject/zbhejftx.html