Tag: selenium webdriver

如何在WebDriver中设置Google Chrome

我正在尝试将Chrome设置为我的浏览器以使用Web驱动程序进行测试并正确设置chromedriver.exe文件,但我仍然收到以下错误: org.openqa.selenium.WebDriverException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see http://code.google.com/p/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://code.google.com/p/chromedriver/downloads/list 我已经检查了驱动程序的路径,但我仍然得到相同的错误。 我不知道我在哪里弄错了。 这是我的代码: File file = new File(“C:\\chromedriver.exe”); System.setProperty(“webdriver.chrome.driver”, file.getAbsolutePath()); Capability= DesiredCapabilities.chrome(); Capability.setBrowserName(“chrome”); Capability.setPlatform(Platform.LINUX); browser=new RemoteWebDriver(new URL(nodeURL),Capability); browser.get(webUrl); 请帮我!!

如何使用selenium webdriver在滚动中搜索动态加载网格中的元素?

Grid有一个名为Username(具有不同的值)的1000行。 并且网格每个视图只显示20行,其他行仅在滚动时加载 (ajax)。 那么,如何在网格中搜索特定的用户名,因为我们只有滚动时加载的元素。 Scrollintoview方法有帮助吗? 或者我需要使用window.scrollby()直到找到搜索到的项目?

selenium获得元素的自然高度和宽度。 不应该依赖style属性。 GetSize(),GetLocation()和getRect()都无法执行此操作

这是场景。 当我使用GetSize(),GetLocation()函数对图像ID’FlashID1x’时它总是给出250,300,但元素的实际高度和宽度是1 X 1,这基本上是错误的。 这是我的目标dom: 这是我的代码: System.out.println(“total : “+iframe.size()); //driver.switchTo().frame(frame); org.openqa.selenium.Point point=driver.findElement(By.xpath(“.//*[@id=’FlashID1x’]”)).getLocation(); System.out.println(“X Position : “+point.x); System.out.println(“Y Position : “+point.y); System.out.println(“X getX : “+point.getX()); System.out.println(“Y gety : “+point.getY()); Rectangle pointer=driver.findElement(By.xpath(“.//*[@id=’FlashID1x’]”)).getRect(); System.out.println(“height : “+pointer.hashCode(); System.out.println(” width : “+pointer.getWidth()); System.out.println(“getHeight : “+pointer.getHeight()); System.out.println(” getWidth : “+pointer.getWidth());

如何在Selenium测试中清除浏览器缓存

我正在使用WebDriver运行我的Selenium测试。 我正在用一些循环重复测试,所以现在我想在JAVA中开始新的测试之前清除缓存。 @Test public void ffAndIe() throws InterruptedException { int i = 0; while(i < 5000){ driver.get("http://dit-map.appspot.com/"); Thread.sleep(15000); driver.get("http://dit- map.appspot.com/#home:zoom=7&lat=37.04&lng=25.05&display=weather"); Thread.sleep(15000); driver.get("http://dit-map.appspot.com/#home:zoom=9&lat=37.55&lng=23.83&display=weather,wind"); Thread.sleep(10000); driver.get("http://dit-map.appspot.com/#home:zoom=9&lat=37.84&lng=23.22&display=weather,wind,cloud"); Thread.sleep(10000); driver.get("http://dit-map.appspot.com/?lang=en#home:zoom=10&lat=38.13&lng=22.59&display=weather,wind,meteogram"); Thread.sleep(10000); i++; } } 在这个while循环中,我想要做的第一件事是清除我的CACHE(IE,MOZILLA&CHROME) 任何想法我怎么能实现这一目标? 谢谢

把一个带有html / Javascript的字符串放到selenium webdriver中

我在内存中有一个html文件作为字符串。 它包含一个标记,其中包含一个操作dom的小脚本。 我现在想将该html页面加载到selenium webdriver中,并在脚本操作后返回页面。 由于我已经在内存中使用了html,因此我不喜欢将html写入文件并将其作为文件加载到driver.get(“file://path/to/file”) 。 所以问题是,如果有可能实现我想要的。 如果webdriver无法做到,也许还有其他可能吗? 这是一个例子: function fill(){ var i = “secret” document.forms[0].elements[1].value=i } 显然,我希望webdriver执行dom操作并根据脚本更改表单。 请注意,这只是一个例子。 我需要运行的实际脚本做了更复杂的事情。

driver.wait()抛出IllegalMonitorStateException

wait(…)的所有变体都从以下代码中抛出以下exception。 我究竟做错了什么? java.lang.IllegalMonitorStateException at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:485) at LoginPage.main(LoginPage.java:29) try { driver.get(“http://domain:port/coco/webapp/login/login.faces”); driver.findElement(By.id(“clientCode”)).sendKeys(“coco”); driver.findElement(By.id(“systemCode”)).sendKeys(“consumer”); driver.findElement(By.id(“userId”)).sendKeys(“ffadmin”); driver.findElement(By.id(“password”)).sendKeys(“password”); driver.findElement(By.className(“af_commandButton”)).click(); driver.wait(); Assert.assertTrue(driver.getPageSource().contains(“Administration”)); } catch (Exception e) { e.printStackTrace(); }

Webdriver findElements由xpath

1)我正在做一个教程来展示findElements by xpath是如何工作的。 我想知道为什么它返回属于id=container的 元素之后的所有文本。 xpath的代码: By.xpath(“//div[@id=’container’] 2)我应该如何修改代码,以便它只返回跟随父笔记的第一个或前几个节点,例如第一个节点,如“Home”,首先是几个节点,如Home,Manual Testing和Automation Testing。 感谢您的建议和帮助! 以下是本教程的代码片段: import java.util.List; import org.junit.Test; import org.junit.Before; import org.junit.After; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; public class WD_findElements { @Test public void test_byxpath(){ WebDriver driver = new FirefoxDriver(); try{ driver.get(“http://www.hexbytes.com”); List elements = driver.findElements(By.xpath(“//div[@id=’container’]”)); System.out.println(“Test7 number of elements: ” + elements.size()); for(WebElement […]

与IE的Selenium Hover元素

我有一个HTML div标签,在div内部有一个元素,当鼠标进入其边界时出现。 现在我想点击鼠标进入或hover时可见的元素。 问题:元素开始闪烁。 浏览器:IE8 我正在使用下面的代码 IWebElement we = addToBasket.FindElement(By.Id(“MyBox”)); action.MoveToElement(we).MoveToElement(driver.FindElement(By.Id(“plus-icon”))).Click().Build().Perform(); 有什么建议为什么眨眼?

如何使用Selenium WebDrivervalidation元素中是否存在属性?

我的屏幕上有很多单选按钮。 选择单选按钮时,它具有已检查的属性。 未选择单选按钮时,不存在checked属性。 我想创建一个方法,如果元素不存在将通过。 我正在使用selenium webdriver和java。 我知道我可以使用getSingleElement(XXX).getAttribute(XXX)来检索属性。 我只是不确定如何validation属性不存在,以及测试在不存在时传递(如果确实存在则失败)。 选中单选按钮时 未选中单选按钮时 我希望在checked属性不存在时传递测试

获取已找到的WebElement的By定位器

是否有一种优雅的方式来获取Selenium WebElement的By定位器,我已经找到/识别出来了? 要清楚这个问题:我想要用“定位器”来查找元素。 在这种情况下,我对特定属性或特定定位器(如css-locator) 不感兴趣。 我知道我可以解析WebElement的toString()方法的结果: WebElement element = driver.findElement(By.id(“myPreciousElement”)); System.out.println(element.toString()); 输出将是例如: [[FirefoxDriver:WINDOWS上的firefox(….)] – > id:myPreciousElement] 如果你通过xpath找到你的元素: WebElement element = driver.findElement(By.xpath(“//div[@someId = ‘someValue’]”)); System.out.println(element.toString()); 然后你的输出将是: [[FirefoxDriver:WINDOWS(….)上的firefox] – > xpath:// div [@someId =’someValue’]] 所以我目前编写了自己的方法来解析这个输出并给我“重新创建”By定位器。 但是在Selenium中是否已经实现了一种更优雅的方式来获取用于查找元素的By定位器? 到目前为止我找不到一个。 如果您确定没有开箱即用,您能想到API创建者可能无法提供此function的任何原因吗? *尽管这与这个问题无关,如果有人想知道为什么你需要这个function,只需要两个例子: 如果你使用PageFactory,你很可能不会在Page类中将定位器作为成员变量,但是在使用页面元素时可能会需要它们。 你正在使用那些只使用没有PageFactory的页面对象模式的人的API,因此希望你交出定位器而不是元素本身。*