在python中执行javascript会导致KeyError
我在尝试用python selenium执行脚本时遇到了困难。。。我试图检查某个元素是否在指定的父元素中,如果是,它应该返回true 这是我的密码:在python中执行javascript会导致KeyError,javascript,python,string,selenium,formatting,Javascript,Python,String,Selenium,Formatting,我在尝试用python selenium执行脚本时遇到了困难。。。我试图检查某个元素是否在指定的父元素中,如果是,它应该返回true 这是我的密码: for box in range(len(browser.find_elements(*selector))): result = browser.execute_script(""" var nodesArray = Array.prototype.slice.call(document.querySelectorAll
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
我不知道我还能做什么。。。我曾尝试更改执行脚本部分的代码,尝试更改字符串格式(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返回false\n'我删除了类似的问题。format()并采用了旧式的%格式, 像这样
希望这有助于你的情况。格式化查找{}括号,并使它把里面的任何东西当作变量你为什么在使用Python时在JS中做了这么多?您应该能够使用python完成所有这些工作。如果您将相关HTML(作为文本)发布,那么我们可以确定您的定位器是否正确/最佳,然后确定更好的方法。问题在于
box+1
。在最后一个循环中,box+1大于范围长度。您可以首先用类似于find\u elements\u的内容替换变量nodesArray
,然后使用\u xpath(“/*[@class='o-boxes\uu item'])
。如果你能给我们一个html的拷贝粘贴,那会有帮助的<代码>驱动程序。page\u source将返回整个页面。
stuff_in_string = "Shepherd %s is %d years old." % (shepherd, age)
print(stuff_in_string)