【问题标题】:How to resize a web element using Selenium如何使用 Selenium 调整 Web 元素的大小
【发布时间】:2013-02-06 09:08:29
【问题描述】:

我可以使用 selenium 网络驱动程序调整网络元素的大小吗? 如果这是可能的,我如何使用 selenium 检查操作是否按预期工作。

感谢您的回答。

【问题讨论】:

  • 您可以使用JavaScriptExecutor 类来调整网页元素的大小。
  • 这是否反映了用户可以用鼠标做什么?

标签: selenium selenium-webdriver selenium-rc


【解决方案1】:
public void Resize(IWebElement element, int offsetX, int offsetY = 0)
{   
    int width = element.Size.Width;            
    Actions action = new Actions(driver);
    action.MoveToElement(element, width, 1);
    action.ClickAndHold().MoveByOffset(offsetX, offsetY).Release();
    action.Build().Perform();            
}

【讨论】:

    【解决方案2】:

    你可以在css中设置高度和宽度,然后使用

    getCssValue(java.lang.String propertyName)
    

    请参阅http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/WebElement.html 了解更多详情。抱歉,我找不到任何示例代码!

    雷切尔

    【讨论】:

    • 有一个演示视频:youtube.com/watch?v=EVIh5b5IWfQ 但在我能得到的代码的一瞥中,我没有看到这个人是如何做到的。如果我像您建议的那样更改css中的属性,那会反映用户可以用鼠标做什么吗?毕竟我想测试用户是否可以调整元素的大小。
    • 硒拖放不起作用 - 这是一个已知的错误 - 如果我是你,我会尝试另一种方法
    【解决方案3】:

    我发现了以下内容:
    - 在 Selenium 中拖放工作正常
    - selenium 中的元素没有调整大小的方法
    - 如果一个元素是可调整大小的,在我的例子中是一个框架,那么 HTML 站点中有一个用于调整大小的元素(该元素可能是不可见的,但如果你将鼠标移到它上面,鼠标光标会改变)
    - 您只需识别此元素并对其执行拖放操作

    【讨论】:

      【解决方案4】:

      我还必须使用 selenium 调整大小\dragAndDrop.. 所以经过一些研究我发现 this site ,它告诉你如何在没有 Js 的情况下调整大小:

      WebElement resizeable = this.getDriver().findElement(By.cssSelector(" enter your selector, mine was div.resize"));
      
      Action resize = action.clickAndHold(resizeable).moveByOffset(X offset, Y offset).release().build();
      
      resize.perform();
      

      我试过了,效果很好。至于你可以使用的拖动:

      Actions builder = new Actions(driver);
      
      Action dragAndDrop = builder.clickAndHold(someElement)
         .moveToElement(otherElement)
         .release(otherElement)
         .build();
      
      dragAndDrop.perform();
      

      Avinoam

      【讨论】:

        【解决方案5】:
        import org.openqa.selenium.By;
        import org.openqa.selenium.NoSuchElementException;
        import org.openqa.selenium.StaleElementReferenceException;
        import org.openqa.selenium.WebDriver;
        import org.openqa.selenium.WebElement;
        import org.openqa.selenium.firefox.FirefoxDriver;
        import org.openqa.selenium.interactions.Actions;
        import org.openqa.selenium.support.ui.ExpectedConditions;
        import org.openqa.selenium.support.ui.WebDriverWait;
        import org.testng.annotations.Test;
        
        public class ResizeExample {
            WebDriver driver;
        
            @Test
            public void testToResizeElement() {
        
                driver = new FirefoxDriver();
                driver.manage().window().maximize();
                driver.navigate().to("http://jqueryui.com/resizable/");
                WebDriverWait wait = new WebDriverWait(driver, 5);
                wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector(".demo-frame")));
                WebElement resizeableElement = driver.findElement(By.cssSelector(".ui-resizable-handle.ui-resizable-se.ui-icon.ui-icon-gripsmall-diagonal-se"));
                resize(resizeableElement, 50, 50);
            }
        
            public void resize(WebElement elementToResize, int xOffset, int yOffset) {
                try {
                    if (elementToResize.isDisplayed()) {
                        Actions action = new Actions(driver);
                        action.clickAndHold(elementToResize).moveByOffset(xOffset, yOffset).release().build().perform();
                    } else {
                        System.out.println("Element was not displayed to drag");
                    }
                } catch (StaleElementReferenceException e) {
                    System.out.println("Element with " + elementToResize + "is not attached to the page document "  + e.getStackTrace());
                } catch (NoSuchElementException e) {
                    System.out.println("Element " + elementToResize + " was not found in DOM " + e.getStackTrace());
                } catch (Exception e) {
                    System.out.println("Unable to resize" + elementToResize + " - " + e.getStackTrace());
                }
            }
        
        }
        

        【讨论】:

          猜你喜欢
          • 2020-02-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-16
          • 2023-03-20
          • 1970-01-01
          • 2017-07-28
          相关资源
          最近更新 更多