JavascriptExecutor
Javascript 脚本执行器。
arguments[i]
是 js 脚本传参的占位符,i 从 0 开始。
页面滚动
jse 方式滚动页面的几种方式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("arguments[0].scrollIntoView();", element);
jse.executeScript("window.scrollBy(0, 500)", ""); jse.executeScript("scroll(0, 500);");
jse.executeScript("window.scrollTo(0, document.body.scrollHeight)");
double ImageHeight = eachtile.getSize().getHeight(); double f = 1.04*ImageHeight; ((JavascriptExecutor)driver).executeScript("window.scrollBy(0,arguments[0]);", -f);
|
元素内取值
1 2 3 4 5 6
| <div class="item-price">100 Yuan</div>
<div class="item-price"> <span>200 Yuan</span> 300 Yuan </div>
|
div 可能有 span 也可能没有,但要不取出 span 中的文本,即,期望得到 100 Yuan 和 200 Yuan
1 2 3 4
| WebElement element = driver.findElement(By.xpath("//div[contains(@class, 'item-price')]"));
JavascriptExecutor jse = (JavascriptExecutor)driver; jse.executeScript("return arguments[0].lastChild.textContent;", element);
|
list 超长,点击其中“不可见”的选项
1 2 3 4 5 6 7 8 9 10 11
| public void selectListByJS() { JavascriptExecutor js = (JavascriptExecutor) driver; String css; css = "document.querySelectorAll('.select-menu')[0].querySelector('.select-option:nth-child(24)').click();"; js.executeScript(css); }
String strJs = "document.getElementsByClassName('arguments[0]').style.height='auto'; document.getElementsByClassName('arguments[0]').style.visibility='visible';";
|
点击元素
1 2 3 4 5 6 7 8 9 10
|
public void clickByJS(WebElement element) { JavascriptExecutor jse = (JavascriptExecutor)driver; jse.executeScript("arguments[0].click()", element); }
|
资料
https://www.guru99.com/execute-javascript-selenium-webdriver.html