小编Sea*_*ean的帖子

单击Ruby Mechanize的按钮

我有一个特别困难的形式,我试图点击搜索按钮,似乎无法做到这一点.以下是页面源代码的表单代码:

<input type="image" name="" src="http://images.example.com/WOKRS53B4/images/search.gif" align="absmiddle" border="0" onclick="return check_form_inputs('UA_GeneralSearch_input_form','search');" title="Search" alt="Search" class="">
Run Code Online (Sandbox Code Playgroud)

我正在尝试执行标准的机械化点击操作:

login_page = agent.click(homepage.link_with(:text => "Search"))
Run Code Online (Sandbox Code Playgroud)

这是因为按钮使用javascript吗?如果有,有什么建议吗?

ruby mechanize

14
推荐指数
2
解决办法
2万
查看次数

使用ruby mechanize捕获超时错误

我有一个机械化功能可以让我退出网站,但在非常罕见的情况下它会让我失望.该功能涉及转到特定页面,然后单击注销按钮.偶尔机械化在进入注销页面或单击注销按钮时会出现超时,代码崩溃.所以我进行了一次小规模的救援,它似乎正如第一段代码所示.

def logmeout(agent)
  page = agent.get('http://www.example.com/')
  agent.click(page.link_with(:text => /Log Out/i))
end      
Run Code Online (Sandbox Code Playgroud)

Logmeout with rescue:

def logmeout(agent)
  begin
  page = agent.get('http://www.example.com/')
  agent.click(page.link_with(:text => /Log Out/i))
  rescue Timeout::Error 
    puts "Timeout!"
    retry
  end
end
Run Code Online (Sandbox Code Playgroud)

假设我正确地理解了救援,即使只是点击超时,它也会做两个动作,所以为了提高效率,我想知道我是否可以在这种情况下使用proc并传递代码块.会这样的工作:

def trythreetimes
  tries = 0
  begin
  yield
  rescue
    tries += 1
    puts "Trying again!"
    retry if tries <= 3
  end
end

def logmeout(agent)
  trythreetimes {page = agent.get('http://www.example.com/')}
  trythreetimes {agent.click(page.link_with(:text => /Log Out/i))}
end
Run Code Online (Sandbox Code Playgroud)

请注意,在我的trythreetimes函数中,我将其保留为通用救援,因此该功能将更具可重用性.

非常感谢任何人提供的任何帮助,我知道这里有几个不同的问题,但它们都是我想要学习的东西!

ruby mechanize

9
推荐指数
1
解决办法
5541
查看次数

如何使用Nokogiri和Ruby从嵌套表中删除HTML中的值?

我试图从我正在使用Nokogiri解析的页面中提取姓名,ID,电话,电子邮件,性别,种族,DOB,班级,专业,学校和GPA.

我尝试了一些不同的xpath,但我尝试抓取的东西比我想要的要多得多:

<span class="subTitle"><b>Recruit Profile</b></span>
<br><table border="0" width="100%"><tr>
<td>
      <table bgcolor="#afafaf" border="0" cellpadding="0" width="100%">
<tr>
<td>
      <table bgcolor="#cccccc" border="0" cellpadding="2" cellspacing="2" width="100%">
<tr>
<td bgcolor="#dddddd"><b>Name</b></td>
          <td bgcolor="#dddddd">Some Person</td>
        </tr>
<tr>
<td bgcolor="#dddddd"><b>EDU ID</b></td>
          <td bgcolor="#dddddd">A12345678</td>
        </tr>
<tr>
<td bgcolor="#dddddd"><b>Phone</b></td>
          <td bgcolor="#dddddd">123-456-7890</td>
        </tr>
<tr>
<td bgcolor="#dddddd"><b>Address</b></td>
          <td bgcolor="#dddddd">1234 Somewhere Dr.<br>City ST, 12345</td>
        </tr>
<tr>
<td bgcolor="#dddddd"><b>Email</b></td>
          <td bgcolor="#dddddd">someone@email.com</td>
        </tr>
<tr>
<td bgcolor="#dddddd"><b>Gender</b></td>
          <td bgcolor="#dddddd">Female</td>
        </tr>
<tr>
<td bgcolor="#dddddd"><b>Ethnicity</b></td>
          <td bgcolor="#dddddd">Unknown</td>
        </tr>
<tr>
<td bgcolor="#dddddd"><b>Date of Birth</b></td>
          <td bgcolor="#dddddd">Jan 1st, 1901</td>
        </tr> …
Run Code Online (Sandbox Code Playgroud)

ruby mechanize nokogiri

5
推荐指数
1
解决办法
1752
查看次数

Jquery可排序/序列化,可排序和连接

嘿,我对jquery和ajax都非常陌生,我正在寻找一些关于如何正确执行此操作的建议.

我有一个div,我正在使用它可以排序,所以我可以根据需要安排事情.它看起来像:

$('#resource-detail-content).sortable({
Run Code Online (Sandbox Code Playgroud)

然后在我的ajax数据中我有类似的东西:

data: $('#resource-detail-content').sortable('serialize'),
Run Code Online (Sandbox Code Playgroud)

哪个工作正常,但分解数据是有意义的,我把div分成两个单独的div,并使用connectWith允许拖动两者之间的内容:

$('#resource-detail-content,#resource-detail-content2').sortable({
  connectWith: '#resource-detail-content,#resource-detail-content2',
Run Code Online (Sandbox Code Playgroud)

我现在要弄清楚的是如何在我的ajax put中发送两个div的数据.我试过了明显的事:

data: $('#resource-detail-content, #resource-detail-content2').sortable('serialize'),
Run Code Online (Sandbox Code Playgroud)

但没有运气.我非常感谢任何帮助.

干杯,肖恩

ajax jquery

4
推荐指数
1
解决办法
1135
查看次数

标签 统计

mechanize ×3

ruby ×3

ajax ×1

jquery ×1

nokogiri ×1