Python For循环中元素定位失效:为什么在 Excel 参数化测试中,循环执行后定位元素失败,而调整浏览器调用位置后就能解决问题?

Python For循环中元素定位失效:为什么在 Excel 参数化测试中,循环执行后定位元素失败,而调整浏览器调用位置后就能解决问题?

python for循环中元素定位失效

在使用 python 中的 for 循环读取 excel 数据进行登录参数化测试时,开发者可能会遇到一个问题,即第一遍执行成功,而第二遍却报错,无法定位元素。

解决方案:在 for 循环外部调用浏览器

对于这个特定问题,解决方法是将浏览器的调用放在 for 循环的外部。修改后的测试代码示例如下:

import unittest
import time
import xlrd
from selenium import webdriver

def open_excel(file):
    try:
        data = xlrd.open_workbook(file)
        return data
    except Exception as e:
        print(str(e))

def excel_table_byindex(file, colnameindex=0, by_index=0):
    data = open_excel(file)
    table = data.sheets()[by_index]
    nrows = table.nrows
    colnames = table.row_values(colnameindex)
    list = []
    for rownum in range(1, nrows):
        row = table.row_values(rownum)
        if row:
            app = {}
            for i in range(len(colnames)):
                app[colnames[i]] = row[i]
            list.append(app)
    return list

class login(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.maximize_window()
        self.driver.implicitly_wait(10)
        self.driver.get("https://passport.meituan.com/account/unitivelogin?service=www&continue=http%3A%2F%2Fwww.meituan.com%2Faccount%2Fsettoken%3Fcontinue%3Dhttps%253A%252F%252Fwww.meituan.com%252F")
        time.sleep(5)

    def test(self):
        tabls = excel_table_byindex(file='./data/meit.xlsx')
        print(tabls)
        if (len(tabls) <= 0):
            assert 0, u"数据异常"
        for i in range(0, len(tabls)):
            print(i)
            print(tabls[i]['username'])
            print(tabls[i]['password'])
            # 登录
            self.driver.find_element_by_id('login-email').send_keys(tabls[i]['username'])
            self.driver.find_element_by_id("login-password").send_keys(tabls[i]['password'])
            self.driver.find_element_by_class_name('btn').click()
            time.sleep(3)

    def tearDown(self):
        time.sleep(3)
        self.driver.quit()

if __name__ == '__main__':
    unittest.main()

通过将浏览器的初始化和退出操作移动到 for 循环之外,我们可以确保每次迭代都使用一个新的浏览器实例。这样,就不会出现元素定位失效的问题。

以上就是Python For循环中元素定位失效:为什么在 Excel 参数化测试中,循环执行后定位元素失败,而调整浏览器调用位置后就能解决问题?的详细内容,更多请关注昆居客【www.kunjuke.com】。

相关推荐:

长安启源 Q06 将于 7 月 15 日发布,定位中大型轿跑 SUV

7 月 12 日消息,长安汽车今日宣布,启源 Q06 将于 7 月 15 日 19:00 在上海正式发布。新车定位中大型轿跑 SUV,基于长安 SDA 天枢架构打造。新车采用纯电驱动,搭载最大功率 245 千瓦电机。注意到,该车官图此前已经公布,该车承袭家族扶光美学设计理念,前脸采用了启源品牌标志性的封闭式前格栅设计,匹配贯穿式的 LED 日间行车灯,车顶带有激光雷达,预计将搭载长安天枢领航辅助驾...

DNF2026夏日版本元素毕业武器选择

DNF2026夏日版本上线了,在夏日版本新增了神器级别的皮肤,并且对很多职业进行了平衡,那么DNF2026夏日版本元素毕业武器怎么选?下面就给大家带来DNF2026夏日版本元素毕业武器选择。 DNF2026夏日版本元素毕业武器选择 本文内容来源于互联网,如有侵权请联系删除。

比亚迪全新 B 级闪充轿车秦 MAX 官宣,路天称定位在秦 L 之上

感谢网友 蒂姆OPPO 的线索投递! 7 月 13 日消息,比亚迪王朝网销售事业部总经理路天今日宣布,比亚迪为年轻朋友打造了一款大有不同的全新 B 级闪充轿车,它是秦家族的“超大杯”,定位在秦 L 之上,也是网上呼声很高的闪充秦 —— 秦 MAX。综合此前报道,这款车已出现在工信部申报名单中,包括纯电和插混版本,尺寸为 4866 x 1880 x 1495mm,轴距 2820mm。作为参考,比亚迪...

消息称荣耀性能小平板可能不会做通讯版本,Magic 系列定位更旗舰

感谢网友 Autumn_Dream、風見暉一、软媒新友2314428、雨雪载途 的线索投递! 7 月 9 日消息,博主 @数码闲聊站 今日爆料称,耀子(荣耀)性能小平板可能不会做通讯版本,因为成本太高了,但听说晚点 Magic 系列会有类似定位的 OLED 小平板,可能会做插卡 SIM 版本,定位更旗舰。此外,该博主还在评论区爆料,这款新品并不会搭载 LCD 显示屏,而是 8 英寸以上的 OLED...

岚图梦想家 9 新车申报:提供纯电 / 插混版本,定位 50 万级旗舰 MPV

感谢网友 热评钦定员 的线索投递! 7 月 10 日消息,工信部发布第 409 批《道路机动车辆生产企业及产品公告》新产品公示,岚图梦想家 9 完成申报。岚图汽车 CEO 卢放此前表示,岚图梦想家 9 定位“50 万级智尊旗舰 MPV”,要打破 50 万级豪华新能源市场的“SUV 惯性”,让 MPV 也有一席之地。岚图梦想家 9 定位中大型 MPV,车身尺寸方面,车身长 5325 mm,宽 199...

奇瑞 iCAR V25 官图公布,定位科技时尚轻旗舰 SUV

7 月 11 日消息,在昨天工信部公布“证件照”之后,奇瑞 iCAR 官微立马就放出了旗下全新车型 ——V25 的官图。根据介绍,新车定位科技时尚轻旗舰 SUV。新车基本延续 iCAR 家族的“未来风格”,依旧是方盒子造型,值得一提的是车顶配备了激光雷达。这款新车为插电式增程混合动力多用途乘用车,车身尺寸为长 4636 mm、宽 1920 mm、高 1855 mm,轴距 2820 mm,额定载客 ...

上汽名爵 MG 07 官宣 7 月 29 日预售:首搭 Momenta R7 世界模型,定位“年轻人的智能纯血轿跑”

感谢网友 xiszero、热评钦定员、很宅很怕生 的线索投递! 7 月 6 日消息,上汽 MG 今日宣布,上汽名爵 MG 07 将在 7 月 29 日开启预售,新车定位“年轻人的智能纯血轿跑”。据介绍,新车尺寸为 4886×1900×1485mm、轴距 2825mm,前脸采用一体冲压蚌式机盖 + 曲面切割悬浮前大灯组设计,尾部采用掀背式溜背造型设计,配备四门无框车门和五档可调电动尾翼,可选 19 ...

《符文世界:龙之荒野》符文元素系统特点介绍

《符文世界:龙之荒野》中的符文元素系统是游戏里非常重要的一个特殊系统,而这个系统的特点有很多,首先是这个系统包括但不限于战斗和采集,我们需要通过挖掘或战利品获得符文精粹。 符文世界龙之荒野符文元素系统有什么特点 本文内容来源于互联网,如有侵权请联系删除。