如何点击一个简单的链接?
2015-08-25
3319
我使用 PhantomJS 登录了网页。一切正常。我打印了页面并知道我已登录。现在我想点击一个名为“Analysis”的链接和以下 html 代码。
<div class="navbar-subnav" data-id="Dashboard">
<ul class="tab-list nav navbar-nav">
<li class='active'><a href="/"><i class='icon-chart-pie'></i> Dashboard</a></li>
<li><a href="/index/analyses"><i class='icon-search'></i> Analysis</a></li>
<li><a href="/date_time/set_date_time"><i class='icon-cog'></i> Settings</a></li>
<li><a href="/report/report" onclick="setTimeout(showLoading, 50);"><i class='icon-chart-area'></i> Reports</a></li>
<li><a href="/manual/csc"><i class='icon-info-circled'></i> About</a></li>
</ul>
通常我使用
document.getElementById("logInButton").click();
“点击”元素,但在这种情况下没有 ID。 那么当我当前在 /index 中时,如何导航到 /index/analysis?
由于我必须登录,所以我必须使用相同的会话,因此简单的
page.open
命令不起作用。
我试过了
function(){
console.log(document.querySelector('[href="/index/analyses"]'));
document.querySelector('[href="/index/analyses"]').click();
},
但日志总是显示
null
'TypeError: 'null' is not an object (evaluating 'document.querySelector('[href="/index/analyses"]').click')
ama.js:52
ama.js:76 in executeRequestsStepByStep
并用它发送垃圾邮件。
3个回答
如果您的页面上只有一个
<li>
元素,其类名为 '
active
',那么您可以这样写:
document.getElementsByClassName('active')[0].children[0].click();
如果您的某个
<ul id="elementID">
元素内有更多
<li class="active">
元素,那么您可以这样写:
var ul = document.getElementsById('elementID');
var li = ul.children[0];//Here 0 is index of the first child, but if you want second element you can put 1 etc.
var a = li.children[0];//Here is your <a> element
a.click();
更新
这应该可行:
document.getElementsByClassName("tab-list")[0].children[1].children[0].click()
MrD
2015-08-25
用一个简单的
function(){
page.open('https://localhost/index/analyses',function(status){
});
},
Helyx
2015-08-25