#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 Я пробовал так, как я вам сказал, но это не работает.