想以编程方式单击网站按钮

时间:2016-10-13 02:04:05

标签: javascript php jquery ajax

我想点击已经发生的网站按钮。 例如: 像网址:www.google.com .. 我想通过使用PHP,Javascript,Jquery和Ajax中的任何方法以编程方式单击Google搜索按钮。 如果有人知道解决方案请告诉我并提供源代码。

注意:我们不需要使用类和ID创建我们想要点击网站按钮的自己的按钮。

我想尝试这个..看起来像这样但不成功..我想点击在if3上显示的学习HTML按钮...在w3school网站..

<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<iframe src="http://www.w3schools.com" width="800" height="400"></iframe>

<script>
//setInterval(function () {$("#hand_1151079882").click();}, 3000);

function clime(){
setInterval(function () {document.getElementById("#w3-btn").click();}, 3000);
alert();
}
//using javascript 
$(document).ready(function () {
$(".cli").on('click', function(event){
    $("#w3-btn").trigger('click');
});

});

</script>
<input type="button" class="cli" name="clime" value="submit" onclick="clime()">

3 个答案:

答案 0 :(得分:1)

您需要为iframe设置ID

var iframe = document.getElementById('w3schools-home');
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
innerDoc.getElementsByClassName('w3-btn')[0].click();

[0]用于按钮学习HTML ,有19个元素有类w3-btn

测试并使用 w3schools Try it Yourself »

重要:确保iframe位于同一个域中,否则您无法访问其内部。那将是跨站点脚本。

as Requested,这里是示例PHP,用于获取元素并重新创建到您自己的站点。

<?php
$url='http://www.w3schools.com/css/default.asp'; // or use $_GET['url']
$scheme=parse_url($url)['scheme'];
$host=parse_url($url)['host'];
$domain=$scheme.'://'.$host;
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_HEADER, 0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_TIMEOUT,30);
curl_setopt($ch,CURLOPT_POST, 0);
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML(substr(curl_exec($ch), curl_getinfo($ch, CURLINFO_HEADER_SIZE)));

$xpath = new DOMXpath($dom);
$aElement = $xpath->query('//a');

$length = $aElement->length;
$links=array();
for ($i = 0; $i < $length; $i++) {
    $element = $aElement->item($i);
    if ($element->tagName=='a' && trim($element->textContent)<>'') {
        foreach ($element->attributes as $attr) {
            $attrName = $attr->nodeName;
            $attrVal = $attr->nodeValue;
            if($attrName=='href' && str_replace(';','',$attrVal)<>'javascript:void(0)'){
                if(substr($attrVal, 0, 1)=='/'){
                    $links[trim($element->textContent)]=$domain.$attrVal;
                }else if(substr($attrVal, 0, 4)=='http'){
                    $links[trim($element->textContent)]=$attrVal;
                }
            }
        }
    }
}

foreach ($links as $key=>$value) {
    echo '<a href="'.$value.'">'.$key.'</a> | ';
}

您可以创建一个javascript函数,以便URLiframe而不是request AJAX获取到脚本为ABOVE的PHP,您可以使用echo(但需要foreach作为示例从我的脚本)或json_encode到数组$links,然后从其他网址/网站到您的网站的reCREATED按钮。

或仅echo到您的网站。

我的脚本仍然需要改进才能处理使用href'../'

的attribut 'foldername/'的值

只是提醒一下,要获取iframe上指向不同域名的ELEMENTS是不可能的。

答案 1 :(得分:0)

您似乎错过了以编程方式点击的ID为w3-btn的元素。

此外,似乎这两个都在做同样的事情......

function clime(){
setInterval(function () {document.getElementById("#w3-btn").click();}, 3000);
alert();
}

$(document).ready(function () {
$(".cli").on('click', function(event){
    $("#w3-btn").trigger('click');
});

});

两者都试图以不同的方式点击ID为w3-btn的元素。你只需要其中一个。

答案 2 :(得分:0)

这可能会有所帮助:

<script>
jQuery(function(){
   jQuery('#modal').click();
});
</script>

我从here得到了这个答案。