使用Selenium突出显示文本

时间:2015-07-20 13:15:39

标签: c# selenium selenium-webdriver webdriver

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

当我试图选择文本的某些部分时,除了将标记放在字符串的末尾之外,它似乎没有做任何事情。 这就是我的文本框的样子: Trying to select parts of the text in code

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

Selected text manually

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

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等组合,但我无法让它发挥作用。关于这里可能有什么问题的任何指示?

1 个答案:

答案 0 :(得分:6)

根据我对你的问题的理解,我试图在我的本地机器上解决它(假期的第一天,哈哈)。对不起,我没有在那台机器上安装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();
}

结果:

Result

这是你想要的吗?