如何阅读style =" display:block;在selenium web驱动程序中使用x-path的元素值?

时间:2017-04-16 10:06:48

标签: java selenium selenium-webdriver

请帮助我阅读我尝试使用x-path访问的元素的文本(我尝试了绝对和部分x路径,但无法读取值。下面是我的代码。获取消息 - "信息:检测到的方言:W3C"

    import java.util.concurrent.TimeUnit;
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;

    public class xpathPractice {

        public static void main(String[] args) {

            System.setProperty("webdriver.gecko.driver", "C:\\BrowserDriver\\geckodriver.exe");

            WebDriver driver = new FirefoxDriver();

            driver.manage().timeouts().implicitlyWait(50,TimeUnit.SECONDS);

            driver.get("http://www.lavasa.com/learn/acca.aspx");
            String str3 = driver.findElement(By.xpath("//*[@id='main-nav']/ul/li[4]/ul/li[1]/a")).getText();
            System.out.println(str3);

            //After executing this code, I see the line in console as "INFO: Detected dialect: W3C"

        }
    }

3 个答案:

答案 0 :(得分:1)

您要查找的元素实际上是隐藏的,在鼠标悬停时显示。因此,我们必须首先使网页元素可见,然后才能使用 getText()函数。

第1步:确定要鼠标悬停的网络元素:

WebElement ele = driver.findElement(By.xpath(".//*[@id='main-nav']/ul/li[4]/a"));

第2步:使用操作类来移动webelement:

Actions act = new Actions(driver);
act.moveToElement(ele);
act.build().perform();

第3步:现在,一旦元素可见,请继续使用getText()来获取元素的文本。

 String str3 = driver.findElement(By.xpath("//*[@id='main-nav']/ul/li[4]/ul/li[1]/a")).getText();
 System.out.println(str3);

答案 1 :(得分:0)

您正试图从未在当前屏幕上显示的webelement获取文本。

我们可以通过两种方式获取文本。

  1. 使用Javascript执行器

    System.setProperty("webdriver.gecko.driver", "C:\\BrowserDriver\\geckodriver.exe");
    
    WebDriver driver = new FirefoxDriver();
    driver.manage().timeouts().implicitlyWait(50,TimeUnit.SECONDS);
    JavascriptExecutor js = (JavascriptExecutor) driver;
    driver.get("http://www.lavasa.com/learn/acca.aspx");
    WebElement element = driver.findElement(By.xpath("//*[@id='main-nav']/ul/li[4]/ul/li[1]/a"));
    String script =(String)js.executeScript("return arguments[0].innerHTML;",element);
    System.out.println(script);
    
  2. 2.使用动作鼠标悬停元素,然后使用getText。

答案 2 :(得分:0)

相反,您可以使用getAttribute()硒的方法,如下所示:

  driver.findElement(By.xpath("//*[@id='main-nav']/ul/li[4]/ul/li[1]/a")).getAttribute("innerHTML");