请帮助我阅读我尝试使用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"
}
}
答案 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获取文本。
我们可以通过两种方式获取文本。
使用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.使用动作鼠标悬停元素,然后使用getText。
答案 2 :(得分:0)
相反,您可以使用getAttribute()
硒的方法,如下所示:
driver.findElement(By.xpath("//*[@id='main-nav']/ul/li[4]/ul/li[1]/a")).getAttribute("innerHTML");