selenium+python debug模式和run模式执行结果不一致问题解决

错误

出错函数如下:

#判断当前页面是否出现弹窗
def alert_is_present(driver):
    try:
        alert_box = driver.switch_to.alert
        return alert_box
    except:
        return False

该函数在debug模式下可以正确执行并返回相应结果,但是在run模式下则只会返回False

原因分析

由于浏览器的渲染需要耗费一定的时间,而在程序执行时几乎是瞬间完成,那么alert_box = driver.switch_to.alert便会直接抛出错误,然后执行except语句,从而也就导致了后续的错误。而在debug模式下,由于单步调试存在一定的时间间隔,因此不会出现错误。

改进

from time import sleep

def alert_is_present(driver):
    try:
        sleep(5)
        alert_box = driver.switch_to.alert
        return alert_box
    except:
        return False

用sleep()函数加入一个时间间隔即可

要用代码编写Python + selenium自动化测试平台,涉及到的技术和步骤比较多,需要一定的开发经验和技能。以下是一个简单的Python + Flask自动化测试平台示例,供您参考: 1. 安装Python和Flask模块; 2. 安装浏览器驱动程序,如ChromeDriver或GeckoDriver; 3. 创建一个Flask应用,并设置路由; 4. 在路由中编写测试函数,包括打开网页、填写表单、击按钮等操作,并使用断言来验证测试结果; 5. 在路由中渲染HTML模板,以展示测试结果; 6. 运行Flask应用,访问测试平台。 以下是一个简单的示例代码,演示如何使用Python和Flask搭建自动化测试平台: ```python # 导入selenium模块 from selenium import webdriver from selenium.webdriver.common.keys import Keys # 导入Flask模块 from flask import Flask, request, render_template # 设置Chrome浏览器驱动路径 driver_path = '/path/to/chromedriver' # 根据自己的实际路径修改 # 创建一个Flask应用 app = Flask(__name__) # 定义测试路由 @app.route('/test', methods=['GET', 'POST']) def test(): if request.method == 'POST': # 获取表单数据 url = request.form['url'] keyword = request.form['keyword'] # 创建一个Chrome浏览器对象 browser = webdriver.Chrome(executable_path=driver_path) # 打开网页 browser.get(url) # 查找搜索框元素,并输入搜索内容 search_box = browser.find_element_by_name('q') search_box.send_keys(keyword) search_box.send_keys(Keys.RETURN) # 等待搜索结果加载完成 browser.implicitly_wait(10) # 断言搜索结果是否包含关键字 assert keyword in browser.page_source # 关闭浏览器 browser.quit() # 渲染HTML模板,展示测试结果 return render_template('result.html', url=url, keyword=keyword) # 如果是GET请求,返回测试页面 return render_template('test.html') # 运行Flask应用 if __name__ == '__main__': app.run(debug=True) ``` 这段代码创建了一个Flask应用,定义了一个名为“/test”的路由。在该路由中,如果是GET请求,会渲染一个名为“test.html”的HTML模板,展示测试表单。如果是POST请求,会获取表单数据,打开指定网页,搜索指定关键字,并断言搜索结果。最后,会根据测试结果渲染一个名为“result.html”的HTML模板,展示测试结果。 要运行这个自动化测试平台,您需要在终端中进入代码所在的目录,执行以下命令: ``` export FLASK_APP=test_platform.py flask run ``` 其中,“test_platform.py”是代码文件名。执行该命令后,Flask会启动应用,并监听localhost:5000端口。您可以在浏览器中访问该地址,即可进入测试平台。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值