别人问题:
好的,就是想看看js的打开一个新窗口,然后做一个切换操作,打印url地址,一直不行,from selenium import webdriver
fox = webdriver.Firefox() fox.implicitly_wait(5) # 新窗口打开链接 js = "window.open('https://jd.com')" # 执行js语句 fox.execute_script(js) w = fox.window_handles print(w) l = fox.switch_to.window(w[-1]) print(l) #1、获取路径 js_url = 'return location.href' url = fox.execute_script(js_url) print(url)
自己去试试:
参考自己教程:
Selenium知识总结
要去安装此处用到的Firefox的driver
Selenium driver Firefox


下载后,解压得到:
二进制文件:
geckodriver

加到PATH中
crifan@licrifandeMacBook-Pro ~/dev/dev_tool/selenium ll total 62384 -rwxr-xr-x@ 1 crifan staff 16M 1 27 13:07 chromedriver -rw-r--r--@ 1 crifan staff 8.0M 3 18 21:29 chromedriver_mac64.zip -rwxr-xr-x@ 1 crifan staff 4.3M 4 9 06:01 geckodriver -rw-r--r--@ 1 crifan staff 1.7M 7 18 11:12 geckodriver-v0.29.1-macos-aarch64.tar.gz crifan@licrifandeMacBook-Pro ~/dev/dev_tool/selenium pwd /Users/crifan/dev/dev_tool/selenium
发现之前已经加过了:
vi ~/.zshrc ... PATH=/Users/crifan/dev/dev_tool/android/AndroidSDK/build-tools/28.0.3:$PATH PATH=$PATH:/opt/metasploit-framework/bin PATH=$PATH:/Users/crifan/dev/dev_tool/selenium source ~/.bash_profile export PATH="/usr/local/opt/openssl@1.1/bin:$PATH" -- INSERT --
所以无需再加。
去看看
crifan@licrifandeMacBook-Pro ~/dev/dev_tool/selenium which geckodriver /Users/crifan/dev/dev_tool/selenium/geckodriver
可以找到
看看版本:
crifan@licrifandeMacBook-Pro ~/dev/dev_tool/selenium geckodriver --version zsh: bad CPU type in executable: geckodriver
好像版本不对。
重新下载

geckodriver-v0.29.1-macos.tar.gz
解压,覆盖刚才的:
geckodriver

再去看版本:
【已解决】Mac macOS BigSur中geckodriver报错:无法打开geckodriver,因为Apple无法检查其是否包含恶意软件
再去试试代码
from selenium import webdriver fox = webdriver.Firefox()
能否运行
第一次会报错:

弹框提示:
您要应用程序“python3.9”接受传入网络连接吗? 点按“拒绝”可能会限制应用程序的行为。此设置可以在“安全性与隐私”偏好设置的“防火墙”面板中更改。 拒绝 允许
点击 允许
继续了。
但是错误依旧:
【已解决】Mac中Selenium报错:SessionNotCreatedException Expected browser binary location moz:firefoxOptions.binary
然后即可继续。

运行js,可以打开京东页面
['6ae10f82-d868-bf4c-aad8-2ebd376f53d9', 'bbeb85b4-cb83-de4c-9c97-bf3bdc314a6e'] None https://www.jd.com/
【总结】
此处代码:
fox = webdriver.Firefox() fox.implicitly_wait(5) # 新窗口打开链接 js = "window.open('https://jd.com')" # 执行js语句 fox.execute_script(js) w = fox.window_handles print(w) l = fox.switch_to.window(w[-1]) print(l) #1、获取路径 js_url = 'return location.href' url = fox.execute_script(js_url) print(url)
最终是:
可以打印出页面地址 https://www.jd.com/ 的
转载请注明:在路上 » 【已解决】Selenium中用js新建窗口再切换窗口