如何解决使用Selenium突出显示网页中的文本
我需要使用Selenium通过鼠标(单击,按住和移动)或键盘(LeftShift右箭头)操作单击并突出显示文本。在下面的示例中,我需要突出显示数字“ 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',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");
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。