java - 使用 Selenium 突出显示网页中的文本
问题描述
我需要使用 Selenium 通过鼠标(单击、按住和移动)或键盘(左移右箭头)操作单击并突出显示文本。在下面的示例中,我需要突出显示数字“1643”。实时我们使用鼠标或键盘以类似于我们想要选择/突出显示文本的方式突出显示或选择文本。请帮助我。
<span>
#1643 Welcome <span> User!. Please wait... </span>
</span>
private void SelectByMouseAndClickByCharacterPosition(WebDriver driver, String xPathSelector, int startPosition, int endPosition) {
try {
Actions actions = new Actions(driver);
Thread.sleep(1000);
WebElement element = driver.findElement(By.xpath(xPathSelector));
actions.moveToElement(element);
String selectedElementText = element.getText();
String textToSelect = selectedElementText.substring(startPosition, endPosition);
String highLightSelector = xPathSelector+"[contains(.,'" + textToSelect + "')]";
WebElement highlightElement = new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath(highLightSelector)));
String selec = highlightElement.getText();
highlightElement.sendKeys(textToSelect);
highlightElement.click();
Thread.sleep(2000);
actions.keyDown(Keys.LEFT_SHIFT);
for(int i=0;i<textToSelect.length(); i++) {
actions.keyDown(Keys.ARROW_DOWN);
}
actions.keyUp(Keys.LEFT_SHIFT);
actions.build().perform();
//actions.clickAndHold().moveByOffset(xcord, ycord);
//actions.pause(3000);
Thread.sleep(2000);
actions.release().perform();
Thread.sleep(1000);
} catch (Exception e) {
// TODO: handle exception
}
}
解决方案
据我了解,您想突出显示页面中的一个文本。
作为使用 javascript 执行程序的最简单方法。
public static void spotlight(WebDriver driver,WebElement element) {
JavascriptExecutor jsexecute = (JavascriptExecutor) driver;
jsexecute.executeScript("arguments[0].setAttribute('style', 'background: red; border: 2px solid green;');", element);
}
现在只是突出显示
public static void main(String[] args) {
driver=new ChromeDriver();
driver.get("https://www.google.com");
WebElement searchbar=driver.findElement(By.xpath("//input[@name=\"q\"]"));
spotlight(driver,searchbar);
searchbar.sendKeys("Hello World");
}
结果
完整的程序是
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;
import org.testng.annotations.Test;
public class test {
WebDriver driver;
public static void spotlight(WebDriver driver, WebElement element) {
JavascriptExecutor jsexecute = (JavascriptExecutor) driver;
jsexecute.executeScript("arguments[0].setAttribute('style', 'background: red; border: 2px solid green;');", element);
}
@Test
public void test(){
driver=new ChromeDriver();
driver.get("https://www.google.com");
WebElement searchbar=driver.findElement(By.xpath("//input[@name=\"q\"]"));
spotlight(driver,searchbar);
searchbar.sendKeys("Hello World");
}
}
推荐阅读
- angular - clr-ui-dark.min.css 文件看起来非常大,即使捆绑包已经优化
- c++ - /INTEGRITYCHECK 已启用 - Windows Defender 阻止自签名 exe
- powershell - 在 power-shell 脚本中找不到进程检查 msiexec 是否已准备好进行另一个安装
- javascript - DataTables:获取隐藏的 td 元素并强制更新 stateSave
- json - 将数据从组件传递到另一个页面,以便它可以引用 ID 并执行某些操作
- stm32 - 第一个 STM32F3 项目使用什么库或项目生成器?
- android - Android 应用程序:如何在关机时请求额外的时间来完成文件保存?
- swift - 在 CoreData 中保存内容时如何更新标签?
- mysql - mySQL数据库将数据导入结构
- angular6 - 如何在角度6中以反应形式为日期表单字段设置null