Нежелательное завершение работы selenium с помощью goroutine

#selenium #go

#selenium #Вперед

Вопрос:

Я разрабатываю с использованием selenium в Golang.
Я закодировал, как показано ниже, и запустил два клиента, используя goroutine.

 func RunSeleniumClient(port int) (selenium.WebDriver, *selenium.Service) {
    caps := selenium.Capabilities{"browserName": "chrome"}
    chromeCaps := chrome.Capabilities{
        Path: "",
        Args: []string{
            "--headless",
        },
    }
    caps.AddChrome(chromeCaps)

    service, err := selenium.NewChromeDriverService("./chromedriver", port)

    wd, err := selenium.NewRemote(caps, "")
    if err != nil {
        fmt.Println(err)
    }

    return wd, service
}

func DeleteCafeNotice() {
    driver, service := RunSeleniumClient(4444)
    defer driver.Quit()
    defer service.Stop()
    RunDelete(driver)
}

func DeleteCafeComment() {
    driver, service := RunSeleniumClient(4448)
    defer driver.Quit()
    defer service.Stop()
    RunDelete(driver)
}

func main() {
    var wg sync.WaitGroup
    wg.Add(2)
    go func() {
        defer wg.Done()
        DeleteCafeNotice()
        fmt.Println("End Notice")
    }()
    go func() {
        defer wg.Done()
        DeleteCafeComment()
        fmt.Println("End Comment")
    }()
    wg.Wait()
}
  

Я разработал удаление своих записей и комментариев.
Однако, если один клиент завершает удаление первым, то другой клиент, который вы все еще удаляете, заканчивается вместе.

Я перепробовал много способов решить эту проблему, но она не была решена, поэтому я оставляю вопрос.

Комментарии:

1. Правильно ли работает код, когда вы запускаете DeleteCafeComment и DeleteCafeNotice по одному в одной Goroutine, а не одновременно в двух?

2. @phonaputer Да, я подтвердил, что это работает.

3. Это может не помочь, но вы могли бы попробовать сделать go func(wg *sync.WaitGroup) { /* ... */ }(amp;wg) вместо того, чтобы закрывать sync.WaitGroup , и посмотреть, решит ли это проблему.

4. @phonaputer Я пробовал так, как я вам сказал, но это не работает.