相关疑难解决方法(0)

Selenium如何关闭Chrome浏览器并打开新的One

我的方案是关闭chrome浏览器并打开一个新浏览器.

public String openNewBrowserWindow() {
    this.log("Opening new Browser window...");
    String stringHandles;
    Set<String> previousWindows = driver.getWindowHandles();
    String previousHandle = driver.getWindowHandle();
    ((JavascriptExecutor)driver).executeScript("window.open();");
    Set<String> newWindows = driver.getWindowHandles();
    newWindows.removeAll(previousWindows);
    String newHandle = ((String)newWindows.toArray()[0]);
    stringHandles = previousHandle + ";" + newHandle;
    return stringHandles;
}
Run Code Online (Sandbox Code Playgroud)

我做的是这样的:

String handlesA = generic.openNewBrowserWindow();
String[] handleA = handlesA.split(";");
generic.closeBrowser();
generic.switchToWindow(handleA[1]);
Run Code Online (Sandbox Code Playgroud)

这适用于Firefox,但不适用于chrome.你们有什么建议吗?

java selenium-chromedriver selenium-webdriver

6
推荐指数
2
解决办法
3万
查看次数

python 中的持久性硒cookie

我有一个测试用例,其中用户关闭浏览器并重新打开它,以测试某些登录 cookie 是否已正确加载。

建议的方法之一

browser.get("domain1.com")
cookies_domain1 = browser.get_cookies()
browser.get("domain2.com")
cookies_domain2 = browser.get_cookies()
//close browser

//re-open browser
browser.get("domain1.com")
for cookie in cookies_domain1:
    driver.add_cookie(cookie)
browser.get("domain2.com")
for cookie in cookies_domain2:
    driver.add_cookie(cookie)
Run Code Online (Sandbox Code Playgroud)

但这看起来不太好。我需要在打开页面之前加载cookie。Selenium 似乎只允许将 cookie 从一个页面添加到该页面!

我尝试执行此操作的另一种方法是保存browser.profile.path目录,备份它,然后在重新连接时将其传递给 a FirefoxProfile,该目录将传递给 a webdriver.Firefox(FirefoxProfile(path_to_directory_backup))。不幸的是,这似乎并没有保存cookie。

python cookies firefox selenium

5
推荐指数
0
解决办法
1878
查看次数

Selenium-在计算机之间共享浏览器会话(cookie,本地存储)

我需要在两台计算机之间转移我的Selenium会话。

要通过Selenium导出和导入cookie,您必须分别访问每个网站,然后才能设置其cookie,我想避免这种情况。我也想复制本地存储。

到目前为止,这是我尝试过的方法:

1-启动新的Selenium会话:

driver = webdriver.Chrome()
Run Code Online (Sandbox Code Playgroud)

2-在%temp%中找到其临时Chrome用户配置文件,并将其复制到我的应用程序的文件夹中

3-使用此用户配置文件启动新驱动程序:

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("user-data-dir=C:\\profiles\\temp_profile")
driver = webdriver.Chrome(chrome_options=chrome_options)
Run Code Online (Sandbox Code Playgroud)

上面的作品-本地存储和cookie仍在我的本地PC上,但是,当我将此用户配置文件复制到另一台PC并启动它时,本地存储仍然存在,但cookie消失了。

我还使用常规的chrome配置文件尝试了相同的操作,并尝试直接在Chrome中而不是在Selenium中启动用户配置文件,并且cookie仍然消失了。

python cookies selenium google-chrome selenium-chromedriver

5
推荐指数
1
解决办法
2654
查看次数

如何在 python 中保存 Firefox webdriver 会话

为了保存 chromedriver 会话,我使用了以下代码片段:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('user-data-dir= path to where to save session')
driver = webdriver.Chrome(executable_path='path to chromedriver.exe', chrome_options=options)
Run Code Online (Sandbox Code Playgroud)

我尝试用 Firefox 做同样的事情,但似乎不起作用:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.add_argument('user-data-dir= path to where to save session')
driver = webdriver.Firefox(executable_path='path to geckodriver.exe', firefox_options=options)
Run Code Online (Sandbox Code Playgroud)

这是正确的方法还是我错过了什么?

python selenium webdriver

5
推荐指数
1
解决办法
1848
查看次数

添加使用Firefox webdriver而不是PhantomJS的Cookie

我有一个带有cookie的泡菜,我通过以下命令创建

def doLogin(driver):
    #do login stuff
    pickle.dump(driver.get_cookies(), open("cookies.pkl", "wb"))
Run Code Online (Sandbox Code Playgroud)

我有示例代码来获取cookie

driver = webdriver.PhantomJS()
self.doLogin(driver)
driver.delete_all_cookies()
for cookie in pickle.load(open("cookies.pkl", "rb")):
    driver.add_cookie(cookie)
Run Code Online (Sandbox Code Playgroud)

我可以看到它很好地创建了cookie,因为如果我print没关系,add_cookie()正在做阴影的事情

这给出了以下例外

WebDriverException:消息:{"errorMessage":"无法设置Cookie","请求":{"headers":{"Accept":"application/json","Accept-Encoding":"identity","Connection": "接近", "内容长度": "219", "内容类型": "应用/ JSON;字符集= UTF-8", "主机": "127.0.0.1:50738","User-Agent": "Python-urllib/2.7"},"httpVersion":"1.1","method":"POST","post":"{\"sessionId \":\"391db430-154a-11e6-8a0a-ef59204729f5 \" ,"cookie":{\"domain \":\"secretWebsite \",\"name \":\"JSESSIONID \",\"value \":\"8332B6099FA3BBBC82893D4C7E6E918B \",\"path \": \"也是一个秘密\",\"httponly \":false,\"secure \":true}}","url":"/ cookie","urlParsed":{"anchor":"","查询":"", "文件": "曲奇", "目录": "/", "路径": "/曲奇", "相对": "/曲奇", "口": "", "主机": "", "密码": "", "用户": "", "用户信息": "", "权威": "", "协议": "", "源": "/饼干", "queryKey" :{},"chunks":["cookie"]},"urlOriginal":"/ session/391db430-154a-11e6-8a0a-ef59204729f5/cookie"}}屏幕截图:可通过屏幕获得

为了工作,我需要的是将webdriver更改为Firefox

这是一个已知的PhantomJS问题吗?

python cookies selenium web-scraping phantomjs

4
推荐指数
1
解决办法
3483
查看次数

将Cookie添加到chromedriver中时,如何修复Selenium中的“无效参数:无效的'expiry'”?

我正在尝试将Cookie添加到浏览器,但是出现以下错误:

消息:无效的参数:无效的“到期”(会话信息:chrome = 75.0.3770.90)

此代码显示了我如何加载和添加cookie。

for cookie in pickle.load(open(r'{0}\{1}_cookie.pkl'.format(settings.COOKIES_PATH, self.tv_username), 'rb')):
    self.browser.add_cookie(cookie)
Run Code Online (Sandbox Code Playgroud)

Cookie的值:

{'__utmc': '226258911', '_sp_id.cf1a': '0b243b32-8dee-46d9-a243-bb4d2bfcb805.1560942815.1.1560942821.1560942815.5941cbc0-0500-4a17-8f6c-4ee3f133f67c', 'km_vs': '1', '__utmt': '1', '__utma': '226258911.510671571.1560942814.1560942814.1560942814.1', 'km_ai': 'm6caeIAUtEqx%2BIWda%2F7klZER%2F1Y%3D', 'kvcd': '1560942821112', '__utmb': '226258911.2.10.1560942814', 'km_lv': '1560942821', '__utmz': '226258911.1560942814.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)', 'etg': 'undefined', '_sp_ses.cf1a':'*'}
Run Code Online (Sandbox Code Playgroud)

与旧版chrome搭配使用时效果很好。任何帮助,将不胜感激!

python selenium selenium-chromedriver

4
推荐指数
3
解决办法
2404
查看次数

如何使用Selenium Python保存Whatsapp Web会话?

我的期望是在验证后会自动将某些东西添加到cookeies数组中,但事实并非如此。

driver = webdriver.Chrome(chromedriver)
whatsapp_url = "https://web.whatsapp.com"
driver.get(whatsapp_url)
print(driver.get_cookies())
time.sleep(30) # We are doing the manual QR code verification here
print(driver.get_cookies())
Run Code Online (Sandbox Code Playgroud)

driver.get_cookies() 前后也是空的

python selenium python-3.x selenium-chromedriver selenium-webdriver

2
推荐指数
1
解决办法
2375
查看次数

如何在 Selenium (selenium-webdriver) JavaScript 中使用 Chrome 配置文件

由于似乎无法使用现有的 Chrome 窗口,因此如何在打开的窗口中使用用户的 Google 帐户(以及所有设置和密码)SeleniumSelenium似乎为自己打开了窗口,但没有谷歌帐户,这是我的程序的重要组成部分。

我的程序对时间非常敏感,因此需要自动登录其访问的网站,并且该程序将被多个用户使用。

javascript selenium selenium-webdriver

1
推荐指数
1
解决办法
5054
查看次数