Tag: selenium

在步骤定义文件之间共享相同的selenium WebDriver

现在我们正在努力采用Cucumber在我们的Java8 / Spring应用程序上运行function测试。 我们希望我们的步骤定义文件尽可能保持DRY,因此计划在不同的function文件中使用相同的步骤定义。 由于我们使用selenium WebDriver来驱动我们的测试,我们需要在步骤定义之间共享相同的驱动程序。 为了说明为什么有多个驱动程序对我们来说是一个问题,想象一个function文件定义了两个步骤:一个用于导航到一个页面,另一个用于声明该页面上出现一条线。 如果两个步骤碰巧在单独的文件中定义,则第一步定义将使用其驱动程序导航到该页面。 到第二步定义运行针对其驱动程序的断言时,它还没有导航到页面(因为这些操作转到另一个驱动程序)并且测试失败。 我们尝试实现每个步骤定义文件将扩展的基类(包含驱动程序)。 事实certificate,Cucumber实例化了每个步骤定义类的实例,因此我们最终得到了具有不同WebDriver实例的每个步骤定义。 我们考虑过使用Spring在每个步骤定义文件中注入一个WebDriver实例,但我相信这会导致上述相同的问题。 我知道单身模式可以用来实现这一目标,但是我们的模式看起来像是一个常见的问题而且单身模式感觉有些过分。 这实际上是接近它的正确方法吗? 或者我错过了一些非常明显的东西? 预先感谢您的帮助!

Selenium Webdriver将鼠标移动到Point

我目前正在尝试将光标移动到一个点( org.openqa.selenium.Point ),该点是通过检查实时图表上标记的出现而设置的,我从中可以得到没有细节但可以找到X和Y的坐标。 如何移动鼠标hover在所述点以打开基础JavaScript菜单? 目前的代码 //finds marker on the current web page Point image = page.findImage(“C:\\Pictures\\marker.png”) ; //move mouse to this x,y location driver.getMouse().mouseMove((Coordinates) image); 这不起作用,因为Point无法转换为org.openqa.selenium.interactions.internal.Coordinates 。

selenium能处理自动完成吗?

我有一个测试用例,需要在基于ajax的文本字段中键入部分值,并validation列表是否具有预期的内容。 如果是,请选择内容。 知道如何使这项工作?

Selenium – IE 11中的NoSuchWindowException

我试图在IE11中使用selenium自动化网页。 我已将保护模式设置设置为相同级别,缩放级别为100%。 在运行测试时,它会打开网站,但之后会提供例外。 以下是使用的代码。 File file = new File(“C:\\Users\\Desktop\\IEDriverServer.exe”); System.setProperty(“webdriver.ie.driver”, file.getAbsolutePath() ); DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer(); capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true); WebDriver driver = new InternetExplorerDriver(capabilities); driver.get(“http://www.google.com”); 和exception堆栈跟踪 Started InternetExplorerDriver server (32-bit) 2.39.0.0 Listening on port 38122 Jul 11, 2014 1:50:02 PM org.apache.http.impl.client.DefaultRequestDirector tryExecute INFO: I/O exception (java.net.SocketException) caught when processing request: Software caused connection abort: recv failed […]

防止在selenium webdriver测试中加载外部内容

问题是: 是否可以告诉由selenium webdriver控制的浏览器不从外部源加载任何内容,或者不从指定的域列表加载资源? 底色: 我有一个网页,我用selenium webdriver编写一个基于java的测试脚本 – 我无法更改页面,我只需编写测试。 网站从其他域加载的某些外部内容存在问题。 外部的东西是我的测试实际上不需要的一些javascript代码,但是有问题的页面包括。 现在的问题。 有时外部源是超级慢的,阻止webdriver在给定的页面加载超时(20秒)内加载页面。 我的测试实际上运行正常,因为页面实际上已加载 – 所有html都在那里,所有内部脚本都被加载并且可以工作。 随便想一想: 有不同浏览器的扩展可以做我要求的,但我需要使用几个浏览器运行我的测试,即chrome,firefox和phantomjs。 而且没有像phantomjs扩展这样的东西。 如果可能的话,我需要一个纯粹基于webdriver技术的解决方案。 不过,我愿意为每个浏览器编写一个单独的解决方案。 我很感激有关如何解决这个问题的任何想法。

扩展Selenium WebDriver WebElement?

我正在遵循Selenium建议的页面对象模式,但是如何为页面创建更专业的WebElement。 具体来说,我们的页面上有表格,我编写了一些辅助函数来获取表格的特定行,返回表格的内容等。 目前,这是我创建的具有表的页面对象的片段: public class PermissionsPage { @FindBy(id = “studyPermissionsTable”) private WebElement permissionTable; @FindBy(id = “studyPermissionAddPermission”) private WebElement addPermissionButton; … } 所以,我想要做的是将权限表变成一个更加自定义的WebElement,其中包含我之前提到的一些方法。 例如: public class TableWebElement extends WebElement { WebElement table; // a WebDriver needs to come into play here too I think public List<Map> getTableData() { // code to do this } public int […]

如何使用Selenium WebDriver和Java滚动特定的DIV?

WebDriver无法识别某些WebElements,WebDriver无法找到浏览器可见区域中不可见的元素。 为了使WebDri可以通过WebDriver查看,我们需要在浏览器的视图中使该元素可见,以向下滚动特定的div! 如何在我的网页的特定区域执行操作(向下滚动并单击)。 我尝试了很多,没有帮助我。 请帮我解决我的问题。

从另一个class级打电话给

我想从class1调用class2 ,但class2没有一个main函数来引用类似Class2.main(args);

在Selenium的inconginto模式下运行chrome浏览器

我想通过selenium在incongito模式下运行chrome。 我用Google搜索了足够的内容,并在此链接的帮助下找到了如何直接在incongito模式下运行chrome: 右键单击Google Chrome的快捷方式,然后选择“属性”。 在“目标”字段的“快捷方式”选项卡上,在程序路径末尾添加-incognito。 所以在“目标”字段中你应该有”C:\Program Files (x86)\Google\Chrome\Application\chrome.exe” –incognito 但是我没有得到如何在selenium中运行它。

使用Java的Selenium WebDriver和HTML Window位置

我将Selenium WebDriver与java.awt.Robot结合使用,以更好地模拟用户与Web应用程序的交互。 是的,我知道这可能是不必要的,但我服务的客户要求它。 目前事情进展顺利,但我有一个小问题,我似乎找不到一个好的方法来获取屏幕位置的网页元素。 标题栏,菜单栏,导航栏等所有内容都会将内容推到物理屏幕上(Robot从中获取坐标),但对Selenium报告元素的位置没有影响。 当我调用: element.getLocation(); 在Selenium WebElement上,它总是给我相对于HTML内容呈现窗格的位置,而不是浏览器窗口本身。 更好的例子是: driver.findElement(By.tagName(“body”)).getLocation(); 无论窗口的实际屏幕位置如何,始终返回0,0。 现在我通过在最大化窗口后添加垂直和水平偏移来攻击它,但是这些在不同的浏览器之间是不一样的(例如,IE的顶部装饰占用了比Firefox更多的空间),并且对于每个用户可能是不同的如果他们有书签工具栏,搜索栏等添加。 是的,我知道我可以在全屏模式下运行,但如果可能的话,我宁愿不这样做。 有没有办法使用WebDriver以可靠的方式获取元素的物理屏幕位置?