ОК, так что действительно должно было быть какое-то окно, в которое нужно переключиться, чтобы Selenium щелкнул по элементу '//*[@id="appd_wrap_close"]'
, и я некоторое время пытался найти его.В конце концов я думаю, что наткнулся на то, что мешает вам нажать на этот элемент.У них есть программное обеспечение для отслеживания испытаний.Вот как я это выяснил: сначала все, что я сделал, было очевидным, осмотрите элемент «x», на который вы пытались нажать.Я попытался найти что-то необычное в этом элементе, и через некоторое время я заметил, что к нему прикреплен Event
.Я нажимаю на Event
в инспекторе Firefox и вижу следующее:

хмм ... Я ожидал, что он просто закроет окно, этоно у него есть следующий JavaScript:
function() {
c.setCookie({
manualclose: "1"
}, "", 1), u.collapse(), window.__bfi.push(["_tracklog", "pcfloatClose", location.href + "&urlPageId=" + e + "&htmlType=" + d])
}
Ну, есть u.collapse
, который, как я догадываюсь, - это весь код, необходимый для свертывания панели.Но зачем все это?Несколько вещей показались мне странными: почему он устанавливает cookie каждый раз, когда вы нажимаете эту кнопку?И почему это называется **manual**close
?Затем я посмотрел немного поближе и увидел текст, следующий за «щелчком»: _esUnionOnline/R3/float/floating_normal.min.js?20190316:2
.ГектометрТаким образом, они вызывают файл JavaScript.И это выглядит как URL.Почему они идут на все эти неприятности из-за события щелчка мышью на этом маленьком 'x'?
Я намыкаю на него и, конечно же, он показывает мне https://webresource.c-ctrip.com/ResUnionOnline/R3/float/floating_normal.min.js?20190306:2
.
Я перехожу кэтот сайт и найти большой файл, содержащий минимизированный JavascriptЯ поставил его через не минификатор (я использовал https://unminify.com/). прямо в верхней части документа, я вижу
document.getElementById("ab_testing_tracker") && "abTestValue_Value" != h ?
document.getElementById("ab_testing_tracker").value
ab_testing_tracker
..... это не звучит хорошо.Поэтому я провожу поиск по этому вопросу и нахожу несколько скрытых входных данных с идентификатором ab_testing_tracker
. На данный момент я совершенно уверен, что они обнаруживают селен и не позволяют вам щелкнуть по нему. После небольшого поиска в общих тестовых методах отслеживанияи обнаружил, что, среди прочего, проверка userAgent
была обычным делом. Пользовательский агент Selenium по умолчанию - это просто веб-драйвер, так как вы можете прочитать здесь , поэтому я выполнил поиск. Конечно, есть 20 результатов.все в форме navigator.userAgent
, а некоторые выглядят как
i.test(navigator.userAgent)
Тогда я заметил, что вы используете случайный, законный userAgent, поэтому у них должен быть какой-то другой способ обнаружения селена. Я заметил эту функцию
function n() {
var t, n;
switch (n = e.ResponseStatus.Errors[0].ErrorCode ? e.ResponseStatus.Errors[0].ErrorCode : "") {
case "104":
t = "验证码输入超时";
break;
case "105":
t = "验证码输入错误";
break;
case "106":
t = "手机号码不正确";
break;
case "107":
t = "客户端IP不能为空";
break;
case "108":
t = "短信内容不能为空";
break;
case "109":
t = "同一号码,两分钟内最多发一次";
break;
case "110":
t = "一天内同一手机最多发两次";
break;
case "111":
t = "一天内同一IP最多发五次";
break;
default:
t = "短信发送失败,请重新发送"
}
return t
}
в своем javascript и с помощью google translate выяснили, что последние несколько переключателей проверяют, заходили ли вы на сайт определенное количество раз.В последнее время я не мог придумать реальный способ обойти это ... по крайней мере, в Firefox.
Если вы хотите провести тестирование в Chrome, эта коробка начинает сворачиваться по умолчанию (по любой причине), так что вы не можетене нужно беспокоиться о том, чтобы избавиться от него.
Итак, если коротко, если вы можете тестировать в Chrome, вы можете просто удалить следующую строку и не беспокоиться о глупой коробке.Тестовый трекер все еще может быть, я не знаю, как он работает, и я подозреваю, что они написали его сами, так как я не могу найти инструмент, который использует эти узлы «ab_test_tracking» - на самом деле, поиск в Google по «ab_test_tracking» дает малорезультаты, и большинство из них были именно на этом сайте.
Дайте мне знать, какие у вас есть варианты (нужно ли вам использовать Firefox по какой-то причине?), и если вы сможете запустить тест в Chrome, дайте мне знатьесли это работает!
Редактировать в отношении кнопки нумерации страниц Итак, я обнаружил, что то же самое относится и к кнопке, которую вы пытаетесь нажать, чтобы перейти на следующую страницу - у нее есть событие onClickон также ссылается на огромный уменьшенный файл с тестовым отслеживанием, поэтому я думаю, что поэтому вы не можете нажать на кнопку, а селен никогда не пройдет первую страницу.
Но кнопка «Далее» не работаетесть скрипт, который он вызывает по клику.Вы должны быть в состоянии нажать эту кнопку с
browser.find_element_by_xpath('//*[@id="divCtripComment"]/div[4]/div/a[2]')
и дайте мне знать, если это работает для вас.