使用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}
实际输出:{}
有人可以帮我弄清楚如何使用此方法获取地理坐标吗?
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...})()