DevToolsActivePort file not exist The process started from chrome is no longer running

╰+攻爆jí腚メ 2023-02-17 05:25 76阅读 0赞

使用Go进行自动化测试

在Linux上Go使用ChromeDriver进行Webdriver发生一个错误。

  1. panic: unknown error: unknown error: Chrome failed to start: exited abnormally.
  2. (unknown error: DevToolsActivePort file doesn't exist)
  3. (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

解决方案:(添加粉红字体参数[作用:解决非root无法调用chome问题])

chromeCaps := chrome.Capabilities{
// Prefs: imgCaps,
Path: “”,
Args: []string{
// “–headless”,
“–start-maximized”,
“–window-size=1200x600”,
"--no-sandbox",
“–user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36”,
“–disable-gpu”,
“–disable-impl-side-painting”,
“–disable-gpu-sandbox”,
“–disable-accelerated-2d-canvas”,
“–disable-accelerated-jpeg-decoding”,
“–test-type=ui”,
},
}


环境: centos7 go.1.14.4
使用到的工具下载链接:

  • wget http://npm.taobao.org/mirrors/chromedriver/83.0.4103.14/chromedriver\_linux64.zip
  • chrome浏览器安装自行百度

完整代码(模拟用户登录百度搜索点击)

  1. package main
  2. import (
  3. "fmt"
  4. "time"
  5. "github.com/tebeka/selenium"
  6. "github.com/tebeka/selenium/chrome"
  7. )
  8. const (
  9. //设置常量 分别设置chromedriver.exe的地址和本地调用端口
  10. seleniumPath = `/root/chromedriver`
  11. port = 9515
  12. )
  13. func main() {
  14. chromeCaps := chrome.Capabilities{
  15. // Prefs: imgCaps,
  16. Path: "",
  17. Args: []string{
  18. // "--headless", //不开启浏览器
  19. "--start-maximized",
  20. "--window-size=1200x600",
  21. "--no-sandbox", //非root可运行
  22. "--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36",
  23. "--disable-gpu",
  24. "--disable-impl-side-painting",
  25. "--disable-gpu-sandbox",
  26. "--disable-accelerated-2d-canvas",
  27. "--disable-accelerated-jpeg-decoding",
  28. "--test-type=ui",
  29. },
  30. }
  31. //1.开启selenium服务
  32. //设置selium服务的选项,设置为空。根据需要设置。
  33. ops := []selenium.ServiceOption{ }
  34. service, err := selenium.NewChromeDriverService(seleniumPath, port, ops...)
  35. if err != nil {
  36. fmt.Printf("Error starting the ChromeDriver server: %v", err)
  37. }
  38. //延迟关闭服务
  39. defer service.Stop()
  40. //2.调用浏览器
  41. //设置浏览器兼容性,我们设置浏览器名称为chrome
  42. caps := selenium.Capabilities{
  43. "browserName": "chrome",
  44. }
  45. caps.AddChrome(chromeCaps)
  46. //调用浏览器urlPrefix: 测试参考:DefaultURLPrefix = "http://127.0.0.1:4444/wd/hub"
  47. wd, err := selenium.NewRemote(caps, "http://127.0.0.1:9515/wd/hub")
  48. if err != nil {
  49. panic(err)
  50. }
  51. //延迟退出chrome
  52. defer wd.Quit()
  53. //3.对页面元素进行操作
  54. //获取百度页面
  55. if err := wd.Get("https://www.baidu.com/"); err != nil {
  56. panic(err)
  57. }
  58. //找到百度输入框id
  59. we, err := wd.FindElement(selenium.ByID, "kw")
  60. if err != nil {
  61. panic(err)
  62. }
  63. //向输入框发送“”
  64. err = we.SendKeys("天下第一")
  65. if err != nil {
  66. panic(err)
  67. }
  68. //找到百度提交按钮id
  69. we, err = wd.FindElement(selenium.ByID, "su")
  70. if err != nil {
  71. panic(err)
  72. }
  73. //点击提交
  74. err = we.Click()
  75. if err != nil {
  76. panic(err)
  77. }
  78. //睡眠20秒后退出
  79. time.Sleep(20 * time.Second)
  80. }

发表评论

表情:
评论列表 (有 0 条评论,76人围观)

还没有评论,来说两句吧...

相关阅读