#java #selenium #selenium-webdriver #selenium-chromedriver #selenium-ide
#java #selenium #selenium-webdriver #selenium-chromedriver #selenium-ide
Вопрос:
Мне нужно щелкнуть и выделить текст либо с помощью мыши (щелчок, удержание и перемещение), либо с помощью клавиатуры (сдвиг влево со стрелкой вправо), используя 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
}
}
Ответ №1:
Насколько я понимаю ваш вопрос, вы хотите выделить один текст со страницы.
Как самый простой способ сделать это с помощью javascript executor.
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");
}
}
Комментарии:
1. Спасибо, Закария. На самом деле, когда я нажимаю и выбираю текст, отображается значок всплывающей подсказки textformatter. Если я нажму жирную кнопку во всплывающей подсказке, выделенный / выделенный текст станет жирным.