【问题标题】:HTML Form Auto FillerHTML 表单自动填充
【发布时间】:2018-11-28 04:27:05
【问题描述】:

我有一个我大学学生的数据库。我想用数据填写http://www.rmlau.site/urn_r/Registration.aspx上的录取表格

我尝试使用 JavaScript,但由于 XSS,它无法正常工作。

有什么方法可以达到同样的效果吗?

我可以接受任何平台(Windows/Linux/基于 Web)上的解决方案。

【问题讨论】:

    标签: javascript php web automation cross-domain


    【解决方案1】:

    我知道这是 JavaScript 的一个问题,但“有什么方法可以达到同样的效果吗?”促使我回答这个问题。您可以使用 Selenium 进行自动表单填写。

    这是一个在 Python 中使用 selenium 填写表单的工作脚本。希望对您有所帮助。

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support.ui import Select
    import time
    
    
    driver = webdriver.Chrome()
    driver.get("http://www.rmlau.site/urn_r/Registration.aspx")
    
    # Students information, loading from excel, csv whatsoever
    name = "John Doe"
    moName = "Jane"
    faName = "Doe Doe"
    dob = "17071997"
    email = "foo@foo.com"
    mobileNo = "090078601"
    adharNo = "1231"
    course = 'B.Sc. Part One'
    
    
    
    time.sleep(3)
    
    # Fill Form
    driver.find_element_by_id("ctl00_ContentPlaceHolder1_txtName").send_keys(name)
    driver.find_element_by_id("ctl00_ContentPlaceHolder1_txtMotherName").send_keys(moName)
    driver.find_element_by_id("ctl00_ContentPlaceHolder1_txtFatherName").send_keys(faName)
    driver.find_element_by_id("ctl00_ContentPlaceHolder1_txtEmail").send_keys(email)
    driver.find_element_by_id("ctl00_ContentPlaceHolder1_txtMobilNo").send_keys(mobileNo)
    driver.find_element_by_id("ctl00_ContentPlaceHolder1_txtAdhar").send_keys(adharNo)
    select = Select(driver.find_element_by_id('ctl00_ContentPlaceHolder1_ddl_course'))
    select.select_by_visible_text(course)
    driver.find_element_by_id("ctl00_ContentPlaceHolder1_txtDOB").send_keys(dob)
    driver.find_element_by_id("ctl00_ContentPlaceHolder1_txtDOB").clear()
    driver.find_element_by_id("ctl00_ContentPlaceHolder1_txtDOB").send_keys(dob)
    
    
    # Submit
    driver.find_element_by_id("ctl00_ContentPlaceHolder1_btnsave").click()
    

    【讨论】:

    • Selenium 似乎是最准确的解决方案。但似乎他们正在使用 javascript 函数 onlyAlphabets 阻止 selenium IDE send_keystype 甚至 value完成任务。你打算如何克服同样的问题?
    • 有什么建议吗?
    • 在 python 中,send_keys 工作正常并且正在提交表单。如果我可以通过它提交表单,我将分享一个基于 JavaScript 的解决方案。
    • 不幸的是无法在 javascript 中做任何事情,但是这可以在 php 中使用 selenium 来完成。
    • 我一直在尝试使用 PHP 实现相同的目标,但遇到了一些麻烦。我们可以通过电子邮件/聊天讨论这个吗?我的电子邮件是 29.gaurav@gmail.com
    【解决方案2】:

    基于网络的解决方案 首先输入一个唯一列(在本例中为手机号码)以从数据库中搜索。使用 ajax 调用它。然后通过 id 方法使用 javascript 填充所有字段

    $(document).ready(function(){
    
       $("#search").keyup(function(){
      if($("#search").val().length>=10){ 
    
      $.ajax({
       type: "post",
    
       url: '<?php echo base_url(); ?>search',
    
       cache: false,    
    
       data:'search='+$("#search").val(),
    
       success: function(response){  
    
        document.getElementById("name").value = response[0].name;
    
        document.getElementById("age").value = response[0].age;
    
        }
       },
       error: function(){      
        alert('Error while request..');
       }
      });
      }
      return false;
       });
     });
    

    【讨论】:

    • @Anandhukrishna VR 使用 Jquery 绝对是一种解决方案,但只有当我有开发人员访问上述站点时才有可能。我没有。我们正在我们的大学运行一个内部软件,并且提到的 URL 是大学的网站。这就是我提到跨域的原因。
    • 哦跨域标签。我确实注意到...下次请在标题中提及这种重要的想法
    • 现在有什么建议吗?
    • 让我检查一下..!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    • 2011-10-22
    • 2014-06-11
    相关资源
    最近更新 更多