2015-10-15 71 views
0

我需要复制页面的内容,除了页眉和页脚只使用鼠标选择+拖动+鼠标+ 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

This works !!!

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()。 现在它的工作正常。

+0

因此,您拿走了我的代码,修正了一个错字,并将其作为您的拥有并接受它?嗯 – JeffC

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


EDIT 2

后OP注意到,我有一个错字,我回去做在.moveToElement()方法的一些研究的代码来获取宽度/高度和鸿沟。从文档,

moveToElement(WebElement toElement)

移动鼠标到元件的中间。

moveToElement(WebElement toElement,INT X偏移,INT Y偏移)

移动鼠标到从元件的左上角偏移。

所以校正使用.moveToElement(e, 0, 0)启动选择在元件的左上角的代码,然后使用.moveToElement(content, content.getSize().getWidth(), content1.getSize().getHeight())移动选择到右下角。这应该现在正确工作。

+0

不,我不需要这个。我想让鼠标在PC前面像普通人一样手动选择内容。 – subhfyu546754

+0

我已根据新信息更新了答案。 – JeffC

+0

谢谢你的回答。但通过观察,我真的很兴奋,它会工作。但它甚至没有移动鼠标。我错过了什么。我直接复制并粘贴你的代码。 – subhfyu546754

相关问题