如何解决挂在特定Windows版本上的硒库

时间:2018-11-01 22:07:19

标签: python selenium go

我有一个复杂的问题。首先:github.com/tebeka/selenium是我用于chromedriver / selenium的库。这是我启动chromedriver的基本代码(有效):

const (
    chromeDriverPath= `chromedriver.exe`
    port= 8080
)
service, err := selenium.NewChromeDriverService(chromeDriverPath, port)
if err != nil {
    log.Fatal(err)
}
defer service.Stop()

// Connect to the WebDriver instance running locally.
caps := selenium.Capabilities{"browserName": "chrome"}
wd, err := selenium.NewRemote(caps, fmt.Sprintf("http://localhost:%d/wd/hub", port))
if err != nil {
    log.Fatal(err)
}

defer wd.Quit()

问题出在我在运行Windows Server 2012的Windows服务器上运行它时。这是我的代码失败的一部分。

for {
    _, err := wd.FindElement(selenium.ByXPATH, xpath1)
    if err != nil {
        fmt.Println("Waiting to get to get to webpage")
        time.Sleep(time.Second * 10)
    } else {
        fmt.Println("Successfully found page.")
        fmt.Println("Getting verification token.")
        vT, err := wd.FindElement(selenium.ByXPATH, verificationTokenXpath)
        if err != nil{
            log.Fatal(err)
        }
        VerifictionToken, err = vT.GetAttribute("value")
        if err != nil {
            log.Fatal(err)
        }
        break
    }
}

这是一个简单的代码块,可不断循环播放,直到webdriver到达特定网页为止,在这种情况下,它将获取令牌。循环部分可以正常工作,但是一旦找到该网页,它将挂起,然后再执行其他操作。例如,在上面的代码中:“成功找到页面”。将永远不会被打印。为了澄清,这只会在此特定的Windows服务器上发生。 如果有人知道这个问题,请告诉我。

编辑: 问题归结为:发现元素时wd.FindElement被阻止。这仅在特定的操作系统(例如Windows Server 2012)上发生。有人对如何修复有建议吗?我确实需要获取Web元素的值,也许我可以解析html?

0 个答案:

没有答案