使用Selenium突出显示文本

我有一个上下文相关菜单,需要高亮显示文本才能使其正常工作。 但是,我在使用Selenium选择文本时遇到问题。 我首先找到我正在寻找的WebElement,然后尝试使用不同的鼠标事件与它进行交互。

当我试图选择部分文本时,除了将标记放在字符串的末尾之外,它似乎没有做任何其他事情。 这是我的文本框的样子: 试图在代码中选择部分文本

这就是我需要它看起来的样子,换句话说,我需要Selenium选择的东西(只是为了说明的目的手动完成它:

手动选择文本

这与我在代码中尝试做的一致:

public static async Task HighlightElementByCssSelector(this RemoteWebDriver @this, string cssSelector, TimeSpan? timeout = null, TimeSpan? interval = null) { var element = await @this.FindElementByCssSelectorAsync(".testmarker-registryentryedit .testmarker-title-field"); Actions action = new Actions(@this).MoveToElement(element).ClickAndHold(element).MoveByOffset(10,0).Release(); action.Build().Perform(); } 

在这种情况下,@ this表示驱动程序,而FindElementByCssSelectorAsync是“包装器框架”的一部分。 我尝试过不同的MoveToElement,DragAndDrop,ClickAndHold等组合,但我无法让它工作。 关于这里可能有什么问题的任何指示?

根据我对你的问题的理解我试图在我的本地机器上解决它(假期的第一天,哈哈)。 对不起,我在那台机器上没有VS所以我用Java编写了它。 代码应该是不言自明的:

 @org.junit.Test public void doTest(){ String query = "This is a test"; WebDriver driver = new FirefoxDriver(); driver.get("https://www.google.com"); WebElement searchBox = new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.id("lst-ib"))); searchBox.sendKeys(query); // make sure it has focus searchBox.click(); Actions actions = new Actions(driver); // go to the beginning of input actions.sendKeys(Keys.HOME).build().perform(); int length = query.substring(0, query.indexOf("a")).length(); actions.keyDown(Keys.LEFT_SHIFT); for (int i = 0; i < length; i++){ actions.sendKeys(Keys.ARROW_RIGHT); } actions.keyUp(Keys.LEFT_SHIFT); actions.build().perform(); } 

结果是:

结果

这是你想要的吗?