javascript - 在 python 中执行 javascript 会导致 KeyError
问题描述
我在尝试在 python selenium 中执行脚本时遇到了困难......我正在尝试检查某个元素是否在指定的父级中,如果是,它应该返回 true。
这是我的代码:
for box in range(len(browser.find_elements(*selector))):
result = browser.execute_script("""
var nodesArray = Array.prototype.slice.call(document.querySelectorAll(".o-boxes__item"));
if(document.querySelector("div:nth-child({}) > div > div.m-package-box__body > div:nth-child(10) > div > label") === nodesArray[{}]){
false
}else{
nodesArray[{}].contains(document.querySelector("div:nth-child({}) > div > div.m-package-box__body > div:nth-child(10) > div > label"));
}""".format(box+1, box, box, box+1))
print(str(result))
当我运行它时,它会在控制台中给我这个输出:
nodesArray[{}].contains(document.querySelector("div:nth-child({}) > div > div.m-package-box__body > div:nth-child(10) > div > label"));
> }""".format(box+1, box, box, box+1))
E KeyError: '\n false\n '
tests/test_shopEshop.py:111: KeyError
我不知道我还能做什么...我尝试更改 execute_script 部分中的代码,尝试更改字符串格式(f 格式、.format 方法、硬编码参数)但没有任何效果,我开始放弃……
解决方案
@Jortega 这是我的整个测试
def test_package_box_href(browser, base_url, testrail_data_file, commentary):
'''
Sprawdza czy atrybut href w button w package boxie zgadza
się z adresem URL do którego prowadzi oraz przy zmianach zaznaczonego toggle
'''
Menu(browser).go_to_page(Menu(browser).SHOP, Menu(browser).SHOP_SHOP)
page_old = GenericTemplateOld(browser)
testrail = ApiTestrailRequest(testrail_data_file["run_id"], '32252')
verification = Assertions(browser, testrail_data_file, commentary)
selector = page_old.PACKAGE_BOXES_BUTTON
WebDriverWait(browser, 10).until(
EC.url_to_be(base_url + '/sklepy-internetowe/')
)
for box in range(len(browser.find_elements(*selector))):
print(len(browser.find_elements(*selector)))
script ="""
var nodesArray = Array.prototype.slice.call(document.querySelectorAll(".o-boxes__item"));
if(document.querySelector("div:nth-child({}) > div > div.m-package-box__body > div:nth-child(10) > div > label") === nodesArray[{}]){
return false;
}else{
return nodesArray[{}].contains(document.querySelector("div:nth-child({}) > div > div.m-package-box__body > div:nth-child(10) > div > label"));
}
""".format(1,0,0,1)
E KeyError: '\n return false;\n '
推荐阅读
- python - 在 Celery 任务中所做的数据库更改在主线程中不可见
- java - 不要将 gradle 子项目安装为外部依赖项
- reactjs - 无法有条件地渲染组件
- java - if(true) 是做什么的?
- javascript - 使用本地或全局变量访问 json 文件的最佳方法是什么?
- ember.js - setApplication 中断了 ember-qunit 测试上下文
- java - 验证后更改对象字段的值
- jakarta-mail - 如何使用 Java 从电子邮件正文中提取数据
- kendo-ui - 带有图标的 Kendo TreeView 远程数据
- node.js - 是否可以在使用节点 js 的 Web 技术中使用 Badge Api 推送通知?