我正在使用Selenium WebDriver编写小型机器人.是否可以使用browsermob-proxy或任何不同的方式从XmlHttpRequests的响应中捕获数据?我需要检查POST/GET查询中收到的数据.实际上问题更多与browsermob-proxy的功能有关,我找不到答案.
我是Python/JS的新手,也是Selenium/WebDriver的自动化测试,但我已经取得了一些进展!
现在我陷入了困境,这真的令人沮丧.
我正在测试的网站销售产品.我设法使我的脚本随机导航并进入付款页面,填写虚拟数据,使用以下方式提交数据:
browser.execute_script("document.Form.submit(); return true;")
browser.execute_script("processPayment(); return true;")
Run Code Online (Sandbox Code Playgroud)
通常,有一个立即付款按钮,单击该元素会导致相同的异常,我无法通过WebDriver(没有WebElement)单击确定/取消,但我发现执行此JS代码我可以得到过去了.我的新加载的页面(在提交数据并确认发布后)带有确认和所有正确的数据加载,但Python脚本被中断,我无法继续测试.
这有解决方法吗?我想要它做的是忽略该模态对话框,等待下一个确认页面加载,然后继续定位元素,打印它们的值,存储它们等.
尝试使用:
wait = ui.WebDriverWait(browser,10)
wait.until(lambda browser: browser.title.lower().startswith('Your Receipt'))
print(browser.title)
Run Code Online (Sandbox Code Playgroud)
但脚本被打断了.对不起,如果这已经回答,但我找不到,而且我也是新手!
提前致谢!
编辑:
做到了!在我的情况下,有效的是我只修改了我的代码
browser.execute_script("document.roomBookingForm.submit(); return true;")
alert = browser.switch_to_alert()
alert.dismiss()
browser.execute_script("processPayment(); return true;")
Run Code Online (Sandbox Code Playgroud)
请注意您需要导入警报的新手.
from selenium.webdriver.common.alert import Alert
Run Code Online (Sandbox Code Playgroud) 因此,我需要有选择地将反斜杠添加到已经在python中的re库中具有预定义含义(例如+和*)的字符中.
说我给阵列
arr = ["five", "+", "two", "*", "zero", "=", "five"]
Run Code Online (Sandbox Code Playgroud)
在re(或python)中是否有任何函数允许我将\添加到"+"和"*",所以它看起来像
arr = ["five", "\+", "two", "\*", "zero", "=", "five"] ?
Run Code Online (Sandbox Code Playgroud)
我可以在技术上进行详尽的搜索,并将arr中的每个元素与其中一个符号进行比较并相应地添加\,但这远非理想.任何帮助,将不胜感激!