博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python+selenium运行时,提示元素不可见
阅读量:5160 次
发布时间:2019-06-13

本文共 3708 字,大约阅读时间需要 12 分钟。

python+selenium运行多次新增项目脚本(出错的元素通过by_id的方式定位),当第三次新增时报Message: element not visible的错误,加入等待时间,等页面加载完成,仍旧报相同的错误,错误如下图:

分析原因:前两次新增都是成功的,说明定位元素的代码没有问题; 加入等待时间还是报错,排除了页面没有加载完成的原因

打开开发者模式(F12),在控制台用id进行定位,发现出现了两个元素:

  1. 0:input#bankAccountType1.form-control
  2. 1:input#bankAccountType1

其中索引为1的元素是正常的,鼠标放到上面,浏览器也可识别出来,但索引为0的元素有后缀.form-control,鼠标放到上面浏览器也不能识别,具体怎么出来的这个元素,目前还不太清楚需要进一步探究。

进一步试验发现第二次新增时,通过id进行定位发现该元素就出现了两次。也就是说通过id定位出两个相同元素,但是脚本中对元素的操作是单元素操作,所以程序无法识别出元素,就报上述错误。

 

解决方法:

方法一:

先定位出元素列表,判断元素的大小,更改索引值

def choose_account_type(self):     choice_account_type = random.randint(1, 2)     if choice_account_type == 1:         css_account_type_current_account = self.add_merchant_v2_config_ini.get_ini_value \             ("add_merchant_v2.ini", "bank_accounts", "current_account")         el_account_type_current_account_list = self.driver.getElenments(css_account_type_current_account)         if len(el_account_type_current_account_list) > 1:             n = 1         else:             n = 0         self.driver.click1(el_account_type_current_account_list[n])     else:         css_account_type_current_account = self.add_merchant_v2_config_ini.get_ini_value \             ("add_merchant_v2.ini", "bank_accounts", "saving_account")         el_account_type_current_account_list = self.driver.getElenments(css_account_type_current_account)         if len(el_account_type_current_account_list) > 1:             n = 1         else:             n = 0         self.driver.click1(el_account_type_current_account_list[n])

 

方法二:

在函数中增加一个参数,当n超过1时,先定位出一组元组,然后再对其中的元素进行操作。代码如下:

def choose_account_type(self, n=0):     if n < 1:         choice_account_type = random.randint(1, 2)         if choice_account_type == 1:             css_account_type_current_account = self.add_merchantR2_config_ini.get_ini_value("add_merchantR2.ini",                                                                                             "bankaccounts",                                                                                             "current_account")             self.driver.click(css_account_type_current_account)         else:             css_account_type_saving_account = self.add_merchantR2_config_ini.get_ini_value("add_merchantR2.ini",                                                                                            "bankaccounts",                                                                                            "saving_account")             self.driver.click(css_account_type_saving_account)     else:         time.sleep(0.5)         choice_account_type = random.randint(1, 2)         if choice_account_type == 1:             css_account_type_current_account = self.add_merchantR2_config_ini.get_ini_value("add_merchantR2.ini",                                                                                             "bankaccounts",                                                                                             "current_account")             el_account_type_current_account_list = self.driver.getElenments(css_account_type_current_account)             self.driver.click1(el_account_type_current_account_list[1])         else:             css_account_type_saving_account = self.add_merchantR2_config_ini.get_ini_value("add_merchantR2.ini",                                                                                            "bankaccounts",                                                                                            "saving_account")             el_account_type_saving_account_list = self.driver.getElenments(css_account_type_saving_account)             self.driver.click1(el_account_type_saving_account_list[1])

 
 

转载于:https://www.cnblogs.com/pandaly/p/10486061.html

你可能感兴趣的文章
2018-2019-1 20165322 第八周课上测试补做
查看>>
解决VisualStudio2010中鼠标滚轮不可用的问题
查看>>
改旧代码有感
查看>>
团体程序设计天梯赛 L1-049. 天梯赛座位分配(测试数据+不同方法)
查看>>
第三章:队列及其应用之一---输出杨辉三角
查看>>
Winform程序Chrome内核 WebBrowser 控件
查看>>
记一次高并发场景下.net监控程序数据上报的性能调优
查看>>
QT中Qtableview视图表格中点击表头进行排序
查看>>
Python Day23
查看>>
windows控制台(console)乱码
查看>>
[Android]通知栏与操作栏的高度-State Bar & Navigation Bar
查看>>
第三次作业
查看>>
关于NX Check_Mate功能外部开发心得
查看>>
复制虚拟机vmware centos搭建集群节点过程中网络配置eth0和eth1遇到的问题以及NAT模式下虚拟机静态IP配置方法...
查看>>
mysql_数据库_操作
查看>>
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
查看>>
AngularJS入门之动画
查看>>
获取子元素在父元素中的下标
查看>>
TextBox 绑定到DataTable某一列属性上
查看>>
背包九讲
查看>>