最新消息:20210917 已从crifan.com换到crifan.org

【已解决】Selenium中用js新建窗口再切换窗口

JS crifan 723浏览 0评论
别人问题:
好的,就是想看看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知识总结
http://book.crifan.com/books/selenium_summary/website
初始化 · Selenium知识总结 (crifan.com)
要去安装此处用到的Firefox的driver
Selenium driver Firefox
Releases · mozilla/geckodriver (github.com)
mozilla/geckodriver: WebDriver for Firefox (github.com)
Running Selenium tests using Firefox Driver : Tutorial | BrowserStack
selenium-webdriver/firefox
Driver requirements :: Documentation for Selenium
Releases · mozilla/geckodriver (github.com)
https://github.com/mozilla/geckodriver/releases/download/v0.29.1/geckodriver-v0.29.1-macos-aarch64.tar.gz
下载后,解压得到:
二进制文件:
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
好像版本不对。
重新下载
https://github.com/mozilla/geckodriver/releases/download/v0.29.1/geckodriver-v0.29.1-macos.tar.gz
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新建窗口再切换窗口

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
95 queries in 0.728 seconds, using 23.34MB memory