我有一个 HTML 元素,如下所示:
<td title="11607" style="text-overflow:ellipsis;white-space:nowrap;">11607</td>
我用来查找元素的定位器是:
string number= "11607";
IWebElement element = DriverUser.FindElement(By.XPath(string.Format("//*[contains(text(),'{0}')]" , number)));
我想使用 selenium 网络驱动程序标记文本 11607,
在搜索了很长时间后,我找到了 2 个解决该问题的方法;第一个解决方案似乎是最合适的,但对我不起作用。我想知道是因为 HTML 标签是 TD 还是因为它不是正确的解决方案。另一个解决方案有效,但我想改进它。
我将在下面详细说明:
第一个解决方案是:(取自Highlight text using Selenium)
public static void HighlightText(this IWebElement element)
{
element.Click();
Actions actions = new Actions(Driver);
actions.SendKeys(Keys.Home).Build().Perform();
int length = element.Text.Length;
actions.KeyDown(Keys.LeftShift);
for(int i = 0 ; i < length ; i++)
{
actions.SendKeys(Keys.ArrowRight);
}
actions.KeyUp(Keys.LeftShift);
actions.Build().Perform();
}
当我运行它时,它什么也没做。
也许是因为我的标签是 TD 标签而不是 INPUT 或类似的东西?
第二种解决方案是:(取自https://www.edgewordstraining.co.uk/2018/02/23/highlighting-web-elements/,并出现在其他地方)
public static void HighlightTextJS(this IWebElement element)
{
var jsDriver = ( IJavaScriptExecutor ) Driver;
string highlightJavascript = @"$(arguments[0]).css({ ""background"" : ""DodgerBlue""});";
jsDriver.ExecuteScript(highlightJavascript , new object[] { element });
}
它标记了元素的所有背景,而不仅仅是字母。我想准确地模拟在文本上拖动鼠标光标。
根据随附的屏幕截图,我得到了像第一行(11604)这样的视图,但对像第二行(11602)这样的视图感兴趣
也许有一个属性我可以添加到 CSS 来模拟它?
白板的微信
相关分类