Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中执行javascript会导致KeyError_Javascript_Python_String_Selenium_Formatting - Fatal编程技术网

在python中执行javascript会导致KeyError

在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

我在尝试用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

我不知道我还能做什么。。。我曾尝试更改执行脚本部分的代码,尝试更改字符串格式(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)