我有一个特别困难的形式,我试图点击搜索按钮,似乎无法做到这一点.以下是页面源代码的表单代码:
<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吗?如果有,有什么建议吗?
我有一个机械化功能可以让我退出网站,但在非常罕见的情况下它会让我失望.该功能涉及转到特定页面,然后单击注销按钮.偶尔机械化在进入注销页面或单击注销按钮时会出现超时,代码崩溃.所以我进行了一次小规模的救援,它似乎正如第一段代码所示.
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函数中,我将其保留为通用救援,因此该功能将更具可重用性.
非常感谢任何人提供的任何帮助,我知道这里有几个不同的问题,但它们都是我想要学习的东西!
我试图从我正在使用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) 嘿,我对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)
但没有运气.我非常感谢任何帮助.
干杯,肖恩