zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Selenium2.0功能测试之WebDriver执行JS方法

JS方法执行 功能测试 WebDriver
2023-09-11 14:20:55 时间
如果你是一个JS高手的话可以在WebDriver 中直接执行JS代码来提升效率,一般用到执行js的场景主要分一下两种: 在页面加载的时候执行JS 在某个已经定位了的元素上执行js
public class ExecuteJSOnPageLoading { private static final String URL = "file:///C:/user/Desktop/Selenium/jsdemo.html"; public static void main(String[] args) { WebDriver driver = new ChromeDriver(); // create a chrome driver driver.manage().window().maximize(); // max size the chrome window driver.get(URL); // open URL with the chrome browser try { Thread.sleep(2000); // wait for web loading } catch (InterruptedException e) { e.printStackTrace(); // Execute JavaScript on page loading ((JavascriptExecutor)driver).executeScript("alert(\"Hello,World!\")"); ele.click(); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); driver.quit(); // close webdriver package org.coderinfo.demo; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class ExecuteJSOnWebElement { private static final String URL = "file:///C:/user/Desktop/Selenium/jsdemo.html"; public static void main(String[] args) { WebDriver driver = new ChromeDriver(); // create a chrome driver driver.manage().window().maximize(); // max size the chrome window driver.get(URL); // open URL with the chrome browser try { Thread.sleep(2000); // wait for web loading } catch (InterruptedException e) { e.printStackTrace(); * Execute JavaScript on web element WebElement ele = driver.findElement(By.id("js")); // locate web element ((JavascriptExecutor) driver) .executeScript( "arguments[0]. unction(){alert(js has been execute!);}", ele); // add js on the web element ele.click(); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); driver.quit(); // close webdriver }


JS执行机制 JS是单线程 JS是单线程的,也就是说JS代码是按顺序执行的,一行一行执行的,不会出现同时执行多行代码的情况。 也就是JavaScript同一时间内只能做一件事情,如果有多个任务,就必须排队,前一个任务结束,才能执行后一个任务。(比如我们对某个DOM元素进行添加删除操作室,不同同时进行,要按照顺序执行)