2017-08-17 121 views
0

我是Selenium WebDriver的初学者,我在StackOverflow主页上使用这个测试。这些将是我测试的步骤:如何在使用Java的Selenium WebDriver上将鼠标移动到元素上时关注元素?

  1. 首先,转到StackOverflow的主页。
  2. 然后,移动鼠标上用户按钮使得其将被聚焦。 (我们没有去点击它只是将鼠标悬停它。)
  3. 现在,发现屏幕上的有源元件(即这是 当前焦点的元素),然后点击它。

我想要用户按钮被点击,因为它是目前的焦点,但没有发生。而不是问题按钮被点击。 这是我为同一测试编写的代码。

package insertCartridge; 

import java.util.concurrent.TimeUnit; 
import org.openqa.selenium.By; 
import org.openqa.selenium.Dimension; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.interactions.Actions; 

public class Practice { 
    public static void main(String[] args) throws InterruptedException { 
    // TODO Auto-generated method stub 
    System.setProperty("webdriver.gecko.driver", "D:\\SELENIUM\\geckodriver-v0.18.0-win64\\geckodriver.exe"); 
    WebDriver driver = new FirefoxDriver(); 
    driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS) ; 
    String baseUrl = "https://stackoverflow.com/"; 
    driver.get(baseUrl); 
    driver.manage().window().setSize(new Dimension(1920, 1080)); 
    WebElement Users = driver.findElement(By.xpath("/html/body/header/div/div[1]/nav/ol/li[5]")); 
    Thread.sleep(3000); 
    Actions builder = new Actions(driver); 
    builder.moveToElement(Users).perform(); 
    Thread.sleep(3000); 
    driver.switchTo().activeElement().click(); 
} 
} 

我不明白为什么我没有得到预期的输出。请帮忙。

+0

你不想点击的用户? –

+0

@PotnuruRavi,是的,我不想点击USERS。只需将鼠标光标移动到它上面,然后找到活动元素(应该是USERS),然后单击它。 – DG4

+0

找到元素(使用坐标)并使用可以移动到“用户”选项卡的操作。 Actions builder = new Actions(driver); builder.MoveToElement(WaitForElement(By.CssSelector(starElement)),location.X,location.Y); –

回答

1

我不知道为什么Actions类不聚焦的元素。它是一个问题或者是很多时候我在Firefox浏览器中遇到Actions类时遇到的问题。

你仍然有一个替代的方式来聚焦所需的元素,然后进行点击的焦点元素上即JavascriptExecutor

在这里,你是你的代码:

JavascriptExecutor jse = (JavascriptExecutor) driver; 
jse.executeScript("document.getElementById('nav-users').focus();"); 

System.out.println(driver.switchTo().activeElement().getTagName());  
driver.switchTo().activeElement().click(); 
+0

有什么方法可以通过Xpath获取元素?因为我在其中getElementById方法不起作用的Web应用程序中使用此方法。虽然您提出的方法在StackOverflow上运行良好。 – DG4

+0

@ DG4,是的,有一种方法可以使用xpath。你必须使用javascript的'evaluate()'。尝试这和它'jse.executeScript(取代的xpath “document.evaluate(\” //一个[@ ID = 'NAV-用户'] \”,文件,空,XPathResult.FIRST_ORDERED_NODE_TYPE,null)的.singleNodeValue.focus( );“);' – NarendraR

+0

我遵循了你的建议,但它在上面的代码中使用xpath显示错误。这是错误:无效的转义序列(有效问卷是\ B \牛逼\ n \˚F\ r \” \” \\)很抱歉,如果这听起来很愚蠢,我没有使用JavaScript任何以往的经验 – DG4

相关问题