Tag: webdriver

selenium元素位置

有没有一种简单的方法可以从另一个元素中找到一个子元素(这两个项目都是使用PageFactory定位的)? 我们有一套容纳许多模块的容器,我想确保它们显示在适当的位置。 API似乎只有以下方法: webElement.findElement(s).(By by); 有一种简单的方法可以执行以下操作: webElement.findElement(s)(WebElement webElement); 甚至更好: webElement.contains(WebElement webElement);

如何为webdriver编写keyDown和keyUp?

我正在尝试为webdriver写一个keyDown和keyUp,类似于selenium。 我知道如何使用Actions,但是dint找到了一种编写generics(用于特殊键和普通键)keyDown函数的方法。 像selenium一样接受键码以及键。 有任何想法吗?

保存Selenuim Web Driver生成的firefox配置文件

我使用Selenium WebDriver和firefox。 每次selenium在temp文件夹中为firefox生成新的anoniumus配置文件,并在退出后删除它。 我需要这个档案。 我怎么才能得到它? 存储的Fe配置文件 C:\Documents and Settings\Developer\Local Settings\Temp\anonymous5583304190515426768webdriver-profile 关闭WebDriver后 driver.quit(); 配置文件将被删除,但它已被记录,我希望在下一次迭代中使用它,方法是使用它启动WebDriver: FirefoxDriver driver = new FirefoxDriver(new FirefoxProfile(profileFolder)); 是否有可能保存配置文件没有肮脏的黑客攻击,如驱动程序工作时应对整个文件夹(我不确定它是否工作,因为在Windows中,文件夹被锁定而firefox启动)? 可能在Selenium中存在一些API吗?

来自Selenium 2 / WebDriver的Id的jQuery元素选择器

我可以在Selenium中使用((RemoteWebElement) webElement).getId()获取元素的ID,它返回如下字符串: {e9b6a1cc-bb6f-4740-b9cb-b83c1569d96d} 我想知道该ID的来源。 我正在使用FirefoxDriver() ,所以这个Firefox有关吗? 有没有办法只通过知道这个ID来选择一个带有Jquery的元素?

Selenium WebDriver – 意外的modal dialog警报

我正在尝试使用WebDriver来自动化网站。 我正在使用Firefox驱动程序,但主页有一个弹出模式警报窗口:说: 您需要使用IE 6.0查看此应用程序。 否则一些function可能无法正常工作我检查了页面的来源,它有一个function。 模态警报不是HTML元素,我尝试使用FireBug查找任何元素,但无济于事。 if ( strBrowName == “Microsoft Internet Explorer” ) { if ( (( strBrowVersion.indexOf( ‘MSIE 6’ ) ) > 0 ) ) { } else { alert( “You need to use IE 6.0 for viewing this application. Else some features may not work” ); } 在我的WebDriver代码中,我在驱动程序中使用了以下function(如此处的其他post所示) DesiredCapabilities dc=new DesiredCapabilities(); dc.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR,UnexpectedAlertBehaviour.ACCEPT); […]

如何将标头或参数添加到使用Selenium Webdriver处理的HTTP请求中?

我正在使用Selenium Webdriver进行Web应用程序的unit testing。 它在JUnit测试中使用尽管广泛阅读可用文档并搜索,我找不到一种方法: 将标头添加到驱动程序传递的HTTP请求中。 向这样的请求添加参数,就好像驱动程序在提交表单后获得目标URL一样。 可以创建一个具有适当forms的测试网页,并让Webdriver反弹以自动获取这些参数,但这是一个非常难看的黑客。 我想避免它,特别是为了测试primefaces性。 (这是unit testing。) 在Wendriver之前,我使用Spring的MockHttpServletRequest和MockHttpServletResponse来做这个,它就像一个魅力,但我想利用Webdriver的强大function来断言目标页面的内容。

在Clojure中实现Java通用接口

我正在尝试使用webdriver的webdriver-clj包装器在selenium2 / webdriver项目中获取clojure。 但是,由于Web界面是大量编写脚本的,我需要有一个选项来等待脚本创建某些元素,而不是页面加载。 所以我试图在clojure中创建一个wait-for函数,使用WebDriverWait类来测试元素属性,最好使用webdriver / by-functions中的clojure语法。 然而,服务员类直到方法采用通用接口(com.google.common.base.Function)作为参数,并且由于我的Java知识几乎不存在,这对于我刚刚起步的clojure技能来说certificate太多了。 任何有clojure-java互操作技能的人,以及如何在clojure中实现以下java代码以便它与webdriver / by-syntax结合的想法? Function presenceOfElementLocated(final By locator) { return new Function() { public WebElement apply(WebDriver driver) { return driver.findElement(locator); } };} // … driver.get(“http://www.google.com”); WebDriverWait wait = new WebDriverWait(driver, /*seconds=*/3); WebElement element = wait.until(presenceOfElementLocated(By.name(“q”)) 结果应该使这样的事情成为可能 (defn test [] (let [driver (webdriver/new-driver :firefox)] (webdriver/get driver “http://127.0.0.1/”) (webdriver/wait-for (webdriver/by-name […]

Selenium Webdrivers:无任何资源加载页面

我试图阻止Javascript更改我正在使用Selenium测试的网站源代码。 问题是,我不能简单地在Webdriver中关闭Javascript,因为我需要它来进行测试。 这是我正在为Firefox Webdriver做的事情: firefoxProfile.setPreference(“permissions.default.image”, 2); firefoxProfile.setPreference(“permissions.default.script”, 2); firefoxProfile.setPreference(“permissions.default.stylesheet”, 2); firefoxProfile.setPreference(“permissions.default.subdocument”, 2); 我不允许Firefox加载任何图像,脚本和样式表。 如何使用Internet Explorer Webdriver和Chrome Webdriver执行此操作? 我没有找到任何类似的偏好。 或者是否有一种更优雅的方式来阻止webdrivers加载网站的JS文件呢? 谢谢!

如何处理StaleElementReferenceException

我有一个场景,我试图循环条形图上的许多元素,直到我找到“rect”标签名称。 当我点击“rect”标签名称时,从图表中选择单个栏,我将重定向到另一个页面。 请参阅下面的我正在使用的条形图的图像: http : //imgur.com/xU63X1Z 作为参考,我正在使用的条形图是右上角。 我想要执行的测试是点击图表中的第一个栏; 这样做会将我重定向到适当的页面。 为了做到这一点,我使用Eclipse(Java)在Selenium Webdriver中编写了以下代码: WebElement deliveredChartDailyFocus = driver.findElement(By.id(“delivered-chart-daily”)); deliveredChartDailyFocus.click(); List children = deliveredChartDailyFocus.findElements(By.tagName(“rect”)); Iterator iter = children.iterator(); while (iter.hasNext()) { WebElement we = iter.next(); if(we.isDisplayed()){ we.click(); } 一切似乎都运行良好,上面的代码点击“rect”元素并将我重定向到适当的页面。 但是,当我点击页面时,我得到一个错误,因为代码仍然在寻找不在新页面上的“rect”值。 您会注意到上面没有“中断”行……这是因为,在调试代码时,我发现在迭代循环时,click事件直到第3次迭代才开始,我’ m假设因为“rect”元素不可见? 因此,如果我输入一个“break”语句,它会在第一次迭代后退出循环,因此我从未到达执行“click”事件导航到新页面的部分。 基本上,我所追求的是一种能够根据需要循环多次的方式,直到找到适当的“rect”元素。 单击它后,我被重定向到新页面…。只是在那一点上我想要循环退出,以便不显示“NoSuchElementException错误。 如果需要更多详细信息,请告知我们,我们非常感谢您提供的任何指导。

为页面中的帧实现PageObjects模式

如何为页面中的帧实现pageObject模式(Selenium)..我有一个主页,有一个左框架和右框架,我想为每个框架创建页面对象.. 例如,我有如下的LeftFrame页面对象: Public Class HomePageLeftFrame{ private WebElement link; private WebElement textField; } 如何为HomePageLeftFrame对象中的两个元素编写@FindBy注释…有没有办法? 注意:根据关于pageObjects的selenium的文档,提到页面对象可以是整个HTML页面或页面的一部分。我的理解是否正确上述实现?