如何使用selenium选择页面的一部分?

时间:2015-10-15 18:23:13

标签: java selenium

我只需要使用鼠标选择+拖动+鼠标+ 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");

有可能吗? 专家请帮帮忙。

2 个答案:

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