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

问题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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容