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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Selenium和Python从Java脚本获取变量值相关的知识,希望对你有一定的参考价值。

使用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...})()

以上是关于如何使用Selenium和Python从Java脚本获取变量值的主要内容,如果未能解决你的问题,请参考以下文章

python+selenium自动化软件测试(第5章):Selenium Gird

如何通过 Selenium 和 Python 从 html 标签跨度获取文本

如何使用 Selenium 和 Python 查找从 covid 中恢复的人数的类路径

如何使用 Selenium Webdriver 和 Python 从这个非选择下拉菜单中选择这个元素

如何使用 Selenium WebDriver 和 java 从下拉列表中选择一个项目?

如何使用 Python 从 Selenium 的重定向链中获取中间 URL?