Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Selenium突出显示文本_C#_Selenium_Selenium Webdriver_Webdriver - Fatal编程技术网

C# 使用Selenium突出显示文本

C# 使用Selenium突出显示文本,c#,selenium,selenium-webdriver,webdriver,C#,Selenium,Selenium Webdriver,Webdriver,我有一个上下文敏感的菜单,需要文本高亮显示,以使其工作。但是,我在使用Selenium选择文本时遇到了问题。我首先查找我要查找的WebElement,然后尝试使用不同的可用鼠标事件与它进行交互 当我试图选择文本的一部分时,除了将标记放在字符串的末尾之外,它似乎什么也不做。 这就是我的文本框的外观: 这就是我需要它看起来的样子,或者换句话说,我需要Selenium来选择它(只是出于演示的目的手动进行了选择: 这是我在代码中尝试做的事情: public static async Task Hig

我有一个上下文敏感的菜单,需要文本高亮显示,以使其工作。但是,我在使用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();
}
@此
表示本例中的驱动程序,
findelementbycsselectorasync
是“包装框架”的一部分。
我尝试了MoveToElement、DragAndDrop、ClickAndHold等不同的组合,但我就是无法让它工作。有没有关于这里可能有什么问题的提示?

根据我对您问题的了解,我尝试在本地机器上解决它(假期的第一天,lol)抱歉,我在那台机器上没有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();
}
@org.junit.Test
公共空间doTest(){
String query=“这是一个测试”;
WebDriver=newfirefoxdriver();
驱动程序。获取(“https://www.google.com");
WebElement searchBox=新的WebDriverWait(driver,10).until(ExpectedConditions.visibilityOfElementLocated(By.id(“lst-ib”));
searchBox.sendKeys(查询);
//确保它有焦点
searchBox.click();
动作动作=新动作(驱动);
//转到输入的开头
actions.sendKeys(Keys.HOME).build().perform();
int length=query.substring(0,query.indexOf(“a”)).length();
操作。按键向下(按键左移);
for(int i=0;i
结果:


这就是您想要的吗?

您需要使用鼠标吗?如果不需要,您可以尝试使用来自的chord方法。或者从操作使用Shift键发送keyDown,然后使用左箭头发送keyDown(),然后再次使用keydup()?这是一种有效的方法。无需明确使用鼠标。但仍然无法将标记放置在字符串的开头:(您知道该输入中的文本是什么吗?如果知道,您可以使用字符串长度和所需值的索引计算begging,并使用上一条注释中的方法将光标移动到正确位置(无移位)或者你指的是输入框的开头?我想应该是CTRL+LEFT。我指的是从开头到结尾开始高亮显示:)但仍然无法使其工作。