我是硒的新手,我在执行简单任务时遇到了问题。
我试图将鼠标移到页面中的特定区域(x,y坐标),然后单击,但没有成功。我确实阅读了文档,由于使用了chromewebdriver,因此我正在使用{bridge: true}
。
这是我的代码:
var webdriver = require('selenium-webdriver'),
By = webdriver.By,
until = webdriver.until,
Origin = webdriver;
var driver = new webdriver.Builder()
.forBrowser('chrome')
.build();
driver.get('http://www.localhost:4000/');
var actions = driver.actions({ bridge: true });
actions.mouse().move({x: 400, y: 1100, duration: 2000, origin: Origin.VIEWPORT});
另一个问题。我知道有第四个参数 origin origin: Origin.VIEWPORT
,但是,我不知道我是否正确导入了它。
由于我没有任何选定的元素,因此我也不知道如何触发click事件。我要单击鼠标的最终位置。
答案 0 :(得分:0)
似乎您缺少.perform();
。
执行此操作的经典方法是使用Protractor
// Instead of specifying an element as the target, you can specify an offset
// in pixels. This example double-clicks slightly to the right of an element.
browser.actions().
mouseMove(element).
mouseMove({x: 50, y: 0}).
doubleClick().
perform();
您可以将mouseMove
用作body元素的x y。
希望这对您有帮助!
编辑
如果这对您不起作用,请尝试以下操作:
browser.actions() .mouseMove(element, { x: 20, y: 75, }) .perform().then(() => browser.actions() .click() .perform());
答案 1 :(得分:0)
对我有用
//定位一個按鈕
WebElement button = driver.findElement(By.xpath("//div[@class='page-button']"));
//new 一個移動滑鼠的物件
Actions clickAction = new Actions(driver).click(button);
//執行
clickAction.build().perform();
答案 2 :(得分:-1)
WebDriver driver = new FirefoxDriver();
JavascriptExecutor scpt = (JavascriptExecutor)driver;
scpt.executeScript("document.getElementById('[insert id]').click();");
确保您添加了一个计时器休眠,以便它可以加载页面,然后可以随后单击,因此请使用Thread.Sleep();