从selenium调用javascript时出现错误消息

2024-06-16 09:31:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用robotframework进行UI测试,我的数据id是动态的,因此需要使用java脚本获取数据id,如下所示

function getID() {
    var resultid = 'error';
    var tables = document.querySelector("[id^='netinfo-node'][id$='body']").querySelectorAll("[class=x-grid-item-container]")[0].children;
    console.info(tables);
    var len = tables.length
    for (var i = 0; i < len; i++) {
        console.info(tables[i].rows[0].innerText)
        tablelist = tables[i].rows[0].innerText.trim().split('\n')
        // console.info(tablelist);
        var newtablelist = []
        for (var m=0;m<tablelist.length;m++){
            if (tablelist[m]==" "){
                continue
            }else{
            newtablelist.push(tablelist[m].trim())
            }
        }
        var value = newtablelist[1]+newtablelist[2]
        if (value == "vmx10111.0.0.101") {

            resultid = tables[i].attributes[0].value;
            return resultid;
        }else {
            continue
        }

    }

}

这段代码在控制台中运行良好。然而,当我用下面的代码在selenium中调用这个js代码时,我得到了错误:JavascriptException:Message:javascript错误:无效或意外的令牌

getDataID = """return (function getID() { var resultid = 'error'; var tables = document.querySelector("[id^='netinfo-node'][id$='body']").querySelectorAll("[class='x-grid-item-container']")[0].children;console.log(tables);var len = tables.length;for (var i = 0; i < len; i++) {tablelist = tables[i].rows[0].innerText.split('\n');console.log(tablelist);var newtablelist = [];for (var m=0;m<tablelist.length;m++){if (tablelist[m]=="    "){continue}else{newtablelist.push(tablelist[m].trim());}};console.log(newtablelist[0]);console.log(newtablelist[1]);console.log(newtablelist[8]);var value = newtablelist[1]+newtablelist[2];if (value == \"""" + uniqueID + """\") {resultid = tables[i].attributes[0].value;return resultid;}else {continue}}})()"""

dataID = browser.execute_script(getDataID)
print("lsp id: ", dataID)

这应该是“\n”问题,但我不知道如何在python/selenium中转换它,有人能帮我吗,非常感谢


Tags: logidfortableslenifvaluevar