首先,我正在编写一个python脚本来自动从dreamhost.com购买某些域。我首先访问网站的面板,用户可以做网站所提供的任何东西。这里是代码:写入python机械化模块中的文本输入时出现的问题
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源代码,在这里,它是:
它所有的犯罪嫌疑人,有2个元素<input name="fqdn" id="fqdn" class="text reg_domain_input" name="Pick Domain Name" value="mynewdomain" onChange="tradeMarkCheck(this.id)">
第一。我不能使用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 [email protected]).");
}
}
</script>
我已经花了几个小时的调试这一点,并试图获得一个解决方法。任何想法将不胜感激。提前致谢!
唯一的问题是我不能让该过程对用户可见,并且据我所知,没有办法将硒浏览器从用户隐藏的权利? –
我最终与Selenium一起去了 - Python的文档很糟糕,但是一旦你想出了语法,所有东西都能正确运行。谢谢你的帮助。 –