【问题标题】:Injecting Javascript in iframe using selenium使用 selenium 在 iframe 中注入 Javascript
【发布时间】:2016-09-28 16:23:36
【问题描述】:

我是硒的新手。我想点击一个 url,搜索所有 iframe,在每个 iframe 中,我想注入一个 Javascript 代码。那我该怎么做。到目前为止,我已经提出了基本的 selenium 代码,但不知道如何注入 JS。

public class Poc {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver","/home/xxx/xxx/xxx/chromedriver");
        WebDriver driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.get("http://www.sss.org/");

        List<WebElement> elements = driver.findElements(By.tagName("iframe"));
        for(WebElement element:elements) {
            System.out.println(element.getAttribute("id"));
        }
        driver.close();
        System.exit(0);

    }
}

【问题讨论】:

  • 实际的网址是什么?是 sss.org 吗?顺便说一句,你为什么要在页面中注入 JS?也许有其他解决方案可以满足您的需求。

标签: javascript java selenium iframe automated-tests


【解决方案1】:

要将代码注入每个iframe,您首先必须切换到它

import org.openqa.selenium.JavascriptExecutor;

List<WebElement> elements = driver.findElements(By.tagName("iframe"));
for(WebElement element:elements) {
    driver.switchTo().defaultContent();
    driver.switchTo.frame(element);
    if (driver instanceof JavascriptExecutor) {
        ((JavascriptExecutor) driver).executeScript("alert('hello world');");
    }
    System.out.println(element.getAttribute("id"));
}

【讨论】:

    【解决方案2】:

    使用 JavascriptExecutor 在 selenium 中编写 javascript 代码

    你的示例代码是

    JavascriptExecutor js = (JavascriptExecutor) driver;
    WebElement element = driver.findElement(By.linkText("Click ME"));
    js.executeScript("arguments[0].setAttribute('attr', '10')",element);
    

    【讨论】:

    • 你能解释一下第三行发生了什么吗?谢谢
    猜你喜欢
    • 1970-01-01
    • 2017-05-05
    • 2012-08-15
    • 1970-01-01
    • 2016-07-17
    • 2012-04-11
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    相关资源
    最近更新 更多