Так что я использую Watir WebDriver с Firefox и Chrome. Chrome намного быстрее, но, похоже, имеет ряд эксцентричностей. Во-первых, в Firefox, когда я использую что-то вроде:
ff.link(:text, "Click Here").exists?
Работает нормально. Однако в Chrome он часто останавливается, а затем завершается с исключением по таймауту. Так что я должен был сузить поиск в Chrome следующим образом:
linkDiv = ch.div(:class, "mydiv")
linkDiv.link(:text, "Click Here").exists?
Как правило, этот тип сокращения страницы до интересующего тега div работает просто отлично.
Однако в Chrome я заметил еще одну эксцентричность, которую я не заметил в Firefox. В Chrome я иногда получаю ошибку 15 - что-то вроде отсутствия ответа на сокете, но, поскольку он прерывистый, я не могу воспроизвести ошибку по желанию и еще не скопировал точный текст. Я не видел этого в Firefox - по крайней мере, пока - но, возможно, Chrome выдает мне ошибку, когда Firefox скрывает это.
Так что я хотел бы иметь возможность регистрировать, когда возникает эта ошибка, и лучшая идея, которую я имел до сих пор, - это использовать HTTP-коды - т.е. 200, 404, 500 и т. Д. Если код не равен 200, тогда запишите код и попробуйте еще раз.
Есть ли способ в Watir получить HTTP-код? Придя в Ruby из PHP / CURL, я предположил, что будет простой способ получить код HTTP - что-то вроде browser.http_code
(где browser = Watir :: Browser.new: chrome, browser.goto (...)), но Я еще не нашел его, и мне не повезло найти выход в Интернете. «Решения», которые я нашел до сих пор, влекут за собой другие драгоценные камни, вызывающие страницу, чтобы получить возвращенный код. Тем не менее, поскольку эти страницы работают нормально 10 и более раз за каждый раз, когда я получаю эту ошибку, повторный вызов с другим гемом не помогает.
Спасибо
Мой обходной путь ...
Заголовок прерывистой страницы, на котором ничего нет, включает «недоступен» в конце строки browser.title
. Поэтому я использую browser.title.include? "is not available"
проверку, чтобы убедиться, что страница никогда не загружалась.
Это менее чем идеально по многим причинам, например, название может меняться с сайта на сайт или может меняться при обновлении Chrome. Где код состояния 200 всегда скажет мой код, что есть проблема ...
Полагаю, это что-то, что можно предложить разработчикам.
Еще раз спасибо