假设我的网页中有以下片段:
<p
>这是一些文本</p
>
我希望WebDriver在文本中选择“一些”,就好像用户选择了它一样。我该怎么做?我知道如何获得<p
>-元素:
WebElement editable = getDriver().findElement(By.id("someId"));
editable = editable.findElement(By.tagName("p"));
System.out.println(p.getText());
打印“这是一些文本”。
我试着将键发送到元素,这个键过去可以工作(在selenium 2.0b中),但是现在我使用selenium 2.6.0,它停止工作了:
editable.sendKeys(Keys.chord(Keys.SHIFT, Keys.LEFT));
有人有主意吗?我正在使用FirefoxDriver。
发布于 2011-09-23 16:35:52
我曾经用Javascript为Firefox做过一次。基本上,我使用Firefox中的range对象来选择文本。根据要选择的内容更改开始和结束范围索引。这在IE中是行不通的,因为在IE中选择范围在概念上是不同的。我没有方便的IE代码,但既然你关心FF,你可以尝试一下。如果您对IE文本范围感兴趣,请告诉我。
String script = "var range = document.createRange();" +
"var start = document.getElementById('idofthedivthatcontainstext');" +
"var textNode = start.getElementsByTagName('p')[0].firstChild;" +
"range.setStart(textNode, 8);" +
"range.setEnd(textNode, 13);" +
"window.getSelection().addRange(range);";
((JavascriptExecutor)driver).executeScript(script);
发布于 2011-09-22 22:31:27
您正在尝试通过拖动选择右键来选择p标记的内容,我不确定用户在客观上是否可以按照您的建议这样做。Selenium现在试图模拟用户可以在浏览器上执行的确切操作。因此,您不能在p标记上发送shift和左选择键,并期望它选择与文本框不同的是非常可能的文本框,但是您可能必须首先单击文本框才能将其聚焦。
以下是我的建议,以实现这一点,但不确定它是否会起作用。
a) send the left click on the p tag
b) hold the shift key
c) drag the mouse to the end of the p tag.
希望这能有所帮助。
发布于 2011-09-23 08:20:03
使用.Text属性的IWebElement
WebElement editable = getDriver().findElement(By.id("someId"));
editable = editable.findElement(By.tagName("p").Text).ToString();
editable.Replace("This is ", "").Replace(" text.");
System.out.println(p.getText());
https://stackoverflow.com/questions/7516383
复制