我只需要使用鼠标选择+拖动+鼠标+ ctrl + C类复制来复制除页眉和页脚之外的页面内容。
我正在使用Selenium Actions
类。
FirefoxDriver driver = new FirefoxDriver();
Actions builder = new Actions(driver);
driver.get("http://connectatgrace.org/im-new/what-to-expect");
builder.click(driver.findElement(By.className("block-holder")))
.keyDown(Keys.CONTROL).keyDown(Keys.SHIFT)
.click(driver.findElement(By.id("footer")));
System.out.println("CLICKED");
有可能吗? 专家请帮帮忙。
答案 0 :(得分:2)
如果你想要的只是文字,你可以在正确的元素上使用.getText()
来获得它。
WebDriver driver = new FirefoxDriver();
driver.get("http://connectatgrace.org/im-new/what-to-expect");
String text = driver.findElement(By.id("main")).getText().trim();
修改
我现在明白你在寻找什么。我能够使用下面的代码。
基本上,代码会将鼠标移动到包含所有所需文本<div id="content full-width">
的元素的右下角。单击并按住鼠标按钮,移动到元素的左上角,然后CTRL+C
。我还验证了正确的文本进入剪贴板。
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("http://connectatgrace.org/im-new/what-to-expect");
WebElement content = driver.findElement(By.id("content full-width"));
Actions builder = new Actions(driver);
builder.moveToElement(content, 0, 0).clickAndHold().moveToElement(content,
content.getSize().getWidth(), content1.getSize().getHeight()).release();
builder.build().perform();
content.sendKeys(Keys.chord(Keys.CONTROL, "c"));
System.out.println("CLICKED");
注意:如果您使用moveToElement()
,则会移至元素的中心。这就是为什么有代码来获得宽度/高度除以2。
编辑2
在OP注意到我有一个拼写错误后,我回去对.moveToElement()
方法做了一些调查。来自文档,
moveToElement(WebElement toElement)
将鼠标移动到元素的中间位置。
moveToElement(WebElement toElement,int xOffset,int yOffset)
将鼠标移动到元素左上角的偏移处。
所以更正了代码以使用.moveToElement(e, 0, 0)
开始元素左上角的选择,然后使用.moveToElement(content, content.getSize().getWidth(), content1.getSize().getHeight())
将选择移动到右下角。这应该现在正常工作。
答案 1 :(得分:0)
这有效!!!
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("http://connectatgrace.org/im-new/what-to-expect");
WebElement content = driver.findElement(By.id("content full-width"));
Actions builder = new Actions(driver);
builder.moveToElement(content, content.getSize().getWidth() / 2, content.getSize().getWidth() / 2).clickAndHold().moveToElement(content, -content.getSize().getHeight() / 2, -content.getSize().getHeight() / 2);
builder.build().perform();
基本上你忘了放置高度,getHeight()
而不是getWidth()
。
现在工作正常。