Как работать с библиотекой селена, висящей на конкретной версии Windows - PullRequest
0 голосов
/ 02 ноября 2018

У меня сложная проблема. Прежде всего: github.com/tebeka/selenium - это библиотека, которую я использую для chromedriver / selenium. Вот мой основной код для запуска хроматического драйвера (работает):

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-сервере под управлением Windows Server 2012. Это часть моего кода, которая дает сбой.

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
    }
}

Это простой блок кода для непрерывного цикла, пока веб-драйвер не окажется на определенной веб-странице, и в этом случае он получит токен. Часть зацикливания будет работать нормально, но как только она найдет веб-страницу, она зависнет, прежде чем делать что-либо еще. Например, в приведенном выше коде: «Страница успешно найдена». никогда не будет напечатан. Чтобы уточнить, это произойдет только на этом конкретном сервере Windows. Если кто-нибудь знает проблему, пожалуйста, дайте мне знать.

EDIT: Проблема сводится к следующему: wd.FindElement блокируется, когда элемент найден. Это происходит только в определенных операционных системах, таких как Windows Server 2012. У кого-нибудь есть предложения, как это исправить? Мне нужно получить значение веб-элемента, может быть, я смогу разобрать html?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...