首页 > 解决方案 > 使用 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
        }

    }

标签: javaseleniumselenium-webdriverselenium-chromedriverselenium-ide

解决方案


据我了解,您想突出显示页面中的一个文本。

作为使用 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");
    }
}

推荐阅读