我已使用PhantomJS登录网页。一切正常。我打印页面并知道我已登录。现在我想点击一个名为"分析"的链接。和以下的HTML代码。
x+2
通常我"点击"在元素上使用
<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>
但在这种情况下没有ID。 那么当我目前在/ index?
时,如何导航到/ index / analysis由于我必须登录,因此我必须使用相同的会话,因此简单的document.getElementById("logInButton").click();
命令无法正常工作。
我试过
page.open
但是日志总是显示
function(){
console.log(document.querySelector('[href="/index/analyses"]'));
document.querySelector('[href="/index/analyses"]').click();
},
并使用它来保存日志。
答案 0 :(得分:1)
您可以通过href
属性值获取元素:
document.querySelector('[href*="/index/analyses"]')
然后你可以用它触发点击事件或任何你想要的东西:)
自IE8(MDN)支持querySelector。
答案 1 :(得分:1)
用简单的
做了function(){
page.open('https://localhost/index/analyses',function(status){
});
},
答案 2 :(得分:0)
如果您的网页上只有一个<li>
元素,其中包含&#39; active
&#39;然后你可以写:
document.getElementsByClassName('active')[0].children[0].click();
如果某个<li class="active">
元素中有更多<ul id="elementID">
个元素,那么您可以编写如下内容:
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()