相关疑难解决方法(0)

访问Firefox中的文件下载对话框

是否有任何类型的API可以让我在Firefox中操作文件下载对话框?(我想访问用户做某事时出现的那个,而不是自己发起一个).

我想要做的是从Selenium访问这个对话框(以及Selenium"特权模式"是否足以访问chrome接口是我不确定的事情).

firefox selenium dialog

81
推荐指数
5
解决办法
11万
查看次数

使用Java Robot API和Java的Selenium WebDriver进行文件上载的一种解决方案

我看到很多人在使用Selenium WebDriver在测试环境中上传文件时遇到问题.我使用selenium WebDriver和java,并遇到了同样的问题.我终于找到了解决方案,所以我会在这里发布,希望它能帮到别人.

当我需要在测试中上传文件时,我点击按钮中的Webdriver并等待弹出窗口"打开".然后我将路径复制到剪贴板中的文件,然后将其粘贴到"打开"窗口并单击"确定".这是有效的,因为当弹出窗口"打开"时,焦点始终在"打开"按钮中.

您将需要这些类和方法:

import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.awt.Toolkit;
import java.awt.datatransfer.StringSelection;


public static void setClipboardData(String string) {
   StringSelection stringSelection = new StringSelection(string);
   Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
}
Run Code Online (Sandbox Code Playgroud)

这就是我在打开"打开"窗口后所做的事情:

setClipboardData("C:\\path to file\\example.jpg");
//native key strokes for CTRL, V and ENTER keys
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
Run Code Online (Sandbox Code Playgroud)

就是这样.这对我有用,我希望它适合你们中的一些人.

java file-upload selenium-webdriver

21
推荐指数
1
解决办法
4万
查看次数

使用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以可靠的方式获取元素的物理屏幕位置?

java selenium selenium-webdriver

12
推荐指数
2
解决办法
1万
查看次数