【问题标题】:Eliminate entering QR - Whatsapp web automated by selenium - Java消除输入 QR - Selenium 自动化的 Whatsapp 网络 - Java
【发布时间】:2018-09-24 16:41:06
【问题描述】:

第一次我正在尝试消除二维码后的过程。

我通过网络驱动程序运行 Whatsapp 的代码:

public class DriverTester {

public static void main(String[] args) {

    DesiredCapabilities capabilities = DesiredCapabilities.chrome();
    capabilities.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.IGNORE);
    ChromeDriverService service = new ChromeDriverService.Builder()
            .usingDriverExecutable(new File("C:\\whatsup\\src\\main\\resources\\chromedriver.exe"))
            .usingAnyFreePort()
            .build();

    ChromeOptions options = new ChromeOptions();
    options.merge(capabilities);
    ChromeDriver driver = new ChromeDriver(service, options);

    driver.navigate().to("https://web.whatsapp.com/");

    while (driver.findElements(By.xpath(XPaths.autoStartReady)).size() == 0);

    LocalStorage localStorage = driver.getLocalStorage();

    driver.close();

    driver = new ChromeDriver(service, options);

    for (String key : localStorage.keySet()){
        String value = localStorage.getItem(key);
        driver.executeScript("window.localStorage.setItem('"+key+"', '"+value+"');");
    }

    driver.navigate().to("https://web.whatsapp.com/");

}

}

第一次打开网络浏览器时,我正在手机上执行 QR 码例程。执行 javascript 代码时引发异常。

但我遇到了下一个异常:

Exception in thread "main" org.openqa.selenium.NoSuchSessionException: no such session

如果我尝试保存 cookie,cookie 集是空的(无法保存任何 cookie,仍然不知道为什么)。

第一次之后如何跳过 QR 的这个过程?如果有人知道如何跳过它甚至不做一次,它也会有所帮助(但我认为现在太难了)。

提前致谢!

【问题讨论】:

  • 遇到同样的问题,找到解决办法请留言
  • @DebanjanB 你对此有什么想法吗,我们已经等待了一段时间的答案。

标签: java selenium cookies local-storage whatsapp


【解决方案1】:

使用个人资料!

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument(r"user-data-dir=D:\Python\Memory\WebWhatsAppBot")

navegador = webdriver.Chrome(
executable_path="D:\Python\WebWhatsAppBot\chromedriver.exe", chrome_options=options)
navegador.get("https://web.whatsapp.com/")

【讨论】:

  • 您能解释一下您的解决方案吗?
  • 是的,个人资料是每次绕过二维码扫描的正确方法。你只需要扫描那些。我也用过个人资料
【解决方案2】:

Marcelo 的回答是正确的,但在我看来解释得不好,所以这对我有用:

在您的项目目录中创建一个文件夹来存储 chromedriver 会话将创建的所有缓存(忽略 .gitignore 文件中的内容也很好)。

然后,启动 webdriver 选项并设置目录。

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import time

options = webdriver.ChromeOptions()
options.add_argument(r"user-data-dir=./driver/data")
driver = webdriver.Chrome(executable_path=r'./driver/chromedrive84_win', options=options)
driver.get('https://web.whatsapp.com/')

【讨论】:

    【解决方案3】:

    没有使用过的可以跳过第一次扫码

    ChromeOptions options = new ChromeOptions();
    options.addArguments("--incognito"); 
    options.addArguments("--no-sandbox");
    

    删除 --incognito 类型选项后

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-05
      • 1970-01-01
      • 2010-10-11
      • 1970-01-01
      • 2017-06-22
      • 1970-01-01
      相关资源
      最近更新 更多