【问题标题】:Load a public website and execute a script加载公共网站并执行脚本
【发布时间】:2018-06-30 23:32:41
【问题描述】:

我有自己的网站,当我按下按钮时,我想加载一个不属于我的网站(即 Google.com)。当这个页面加载时,我想执行一个脚本。

例如,单击我网站上的按钮,加载 google.com 并使用从我的网站传递的脚本文件中的值预加载搜索栏。

如果我在访问 google.com 时打开开发人员控制台并输入命令,我可以做到这一点,但是,我想自动执行此操作,因此我的脚本将操纵 DOM 元素的值,而不是自己加载控制台这个新页面。

我只是不知道如何加载一个新网站并给它一个运行脚本。

这可能吗?谁能指出我正确的方向?

【问题讨论】:

  • 一般来说,没有。至少,不是来自您自己的客户端代码。另一个页面将受到same-origin policy 的保护。另一个站点有一些提供例外的选项,但这不在您的控制范围内。 – 但是,根据您的需要,有一些浏览器自动化工具是often used for testing

标签: javascript jquery dom web


【解决方案1】:

事实上,它是许多开发人员在自动浏览器测试期间使用的基础。

看看 Selenium - 下面的 Java 代码使用 Selenium 来完成您所要求的工作。或者,像 Chrome Headless https://developers.google.com/web/updates/2017/04/headless-chrome

PhantomJS http://phantomjs.org/quick-start.html 将完成这项工作。

package mypackage;

import org.openqa.selenium.By; 

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.support.ui.WebDriverWait;

public class myclass {

    public static void main(String[] args) {

        System.setProperty("webdriver.chrome.driver", "C:\\selenium-java-2.35.0\\chromedriver_win32_2.2\\chromedriver.exe");

         WebDriver driver = new ChromeDriver(); 
         driver.get("http://www.google.com"); 
         WebElement element = driver.findElement(By.name("q"));
         element.sendKeys("Whatever");
         element.submit();

         driver.close();
    }



}

【讨论】:

  • 这适用于网页抓取或自动化测试,但不适用于他们所描述的用例,即他们想在自己的网站中修改第三方网站。
  • 同意@DanielBeck,但为了提供潜在问题的潜在解决方案,我在字里行间读过,即“我想自动化这个”IMO 可能是 OP 熟悉 Javascript一个点,并试图用它来执行某种形式的抓取或自动化,因为这个问题在典型的网站中似乎不太可能。
  • “在典型的网站中似乎不太可能”我不得不一直说服客户不要做这种事情¯\_(ツ)_/¯
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-09
  • 1970-01-01
  • 1970-01-01
  • 2018-01-31
  • 1970-01-01
  • 2019-08-16
相关资源
最近更新 更多