我需要仅使用鼠标选择+拖动+mouseup+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");
这可能吗? 请专家帮忙。
最佳答案
如果您想要的只是文本,您可以使用 .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)
Moves the mouse to the middle of the element.
moveToElement(WebElement toElement, int xOffset, int yOffset)
Moves the mouse to an offset from the top-left corner of the element.
因此更正了代码以使用 .moveToElement(e, 0, 0)
从元素的左上角开始选择,然后使用 .moveToElement(content, content.getSize().getWidth(), content1.getSize().getHeight())
将选择移动到右下角。现在应该可以正常工作了。
关于java - 如何使用selenium选择页面的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33155810/