Прежде всего, я пишу скрипт на python для автоматизации покупки определенных доменов на dreamhost.com.Сначала я захожу на панель сайта, где пользователи могут делать практически все, что может предложить сайт.Вот код:
br = mechanize.Browser()
br.open("https://panel.dreamhost.com/index.cgi?tree=domain.registration&")
br.select_form(name="a")
br["username"]="my_username_here"
br["password"]="my_password_here"
br.submit()
Это кодовые слова отлично и меня в панель.Отсюда есть текстовое поле для ввода вашего домена и мульти-выбор для выбора вашего расширения - когда эта форма отправляется, она проверяет доступность.
Я использую аналогичный подход к описанному выше успеху и выполняю следующее:
br.select_form(name="f")
br["Pick Domain Name"] = "domainiwanttobuy" #textbox
br["tld"] = [extension list] #select from dropdown
br.submit()
Полученный HTML-код после отправки этой формы показывает, что раскрывающийся список изменяется соответствующим образом, но текстовое полепусто, и я получаю ошибку от Dreamhost, которая говорит: «Ошибка: Пожалуйста, введите доменное имя выше.»
Таким образом, поле ввода не работает - я посмотрел на соответствующую страницу исходного кода HTML, и вот оно:
<input name="fqdn" id="fqdn" class="text reg_domain_input" name="Pick Domain Name" value="mynewdomain" onChange="tradeMarkCheck(this.id)">
Прежде всего, есть подозрение, что есть 2 элемента имени.Я не могу использовать name = "fqdn" или он говорит, что такого элемента управления не существует.Во-вторых, я вижу, что функция javascript вызывается при изменении значения.Я знаю, что механизация не может обрабатывать Javascript, но я не верю, что функция делает что-то ценное.Так что я не думаю, что это вызывает проблему.Вот соответствующая функция javascript:
<script type="text/javascript">
function tradeMarkCheck(x) {
var domain = document.getElementById(x).value;
var bad = /(dream.*host|host.*dream)/;
if (bad.test(domain)) {
alert("NOTE: Domains containing 'DreamHost' in them are not eligible for use with DreamHost Rewards. Also, please ensure that your site/domain does not dilute or infringe upon the 'DreamHost' trademark (if you have any questions as to whether a use is legal or not, contact us at abuse@dreamhost.com).");
}
}
</script>
Я потратил часы на отладку и поиск обходного пути.Любые идеи очень приветствуются.Заранее спасибо!