如何使用Selenium和Python从Java脚本获取变量值

问题描述 投票:0回答:1

使用Selenium,以下是我在Python上运行的代码,通过使用导航器网络api获取地理坐标:

        coordinates = driver.execute_script(
        " return () => {                                            " +
        "   var savedCoordinates;                                   " +
        "                                                           " +
        "   navigator.geolocation.getCurrentPosition(               " +
        "       (pos) => savedCoordinates = pos.coords,             " +
        "       error,                                              " +
        "       options);                                           " +
        "                                                           " +
        "   let options = {                                         " +
        "       enableHighAccuracy: true,                           " +
        "       timeout: 5000,                                      " +
        "       maximumAge: 0                                       " +
        "   };                                                      " +
        "                                                           " +
        "   function error(err) {                                   " +
        "       console.warn(`ERROR(${err.code}): ${err.message}`); " +
        "   };                                                      " +
        "                                                           " +
        " return savedCoordinates;                                  " +
        " }                                                         " ) 
        print(coordinates)

预期输出:{latitude: XXX.XXX, longitude XX.XXXX}

实际输出:{}

有人可以帮我弄清楚如何使用此方法获取地理坐标吗?

javascript python selenium dom
1个回答
0
投票
应该在没有return () => { }的情况下工作

coordinates = driver.execute_script( " var savedCoordinates; " + " " + " navigator.geolocation.getCurrentPosition( " + " (pos) => savedCoordinates = pos.coords, " + " error, " + " options); " + " " + " let options = { " + " enableHighAccuracy: true, " + " timeout: 5000, " + " maximumAge: 0 " + " }; " + " " + " function error(err) { " + " console.warn(`ERROR(${err.code}): ${err.message}`); " + " }; " + " " + " return savedCoordinates; " ) print(coordinates)

就我而言,此() => {}仅定义函数,但不运行它,因此它返回此函数,而不是函数的结果。您可能需要()才能运行它

return (() => {...code...})()

© www.soinside.com 2019 - 2024. All rights reserved.