无法在Salesforce中文版上单击中文链接文本

时间:2014-06-14 21:54:16

标签: java selenium selenium-webdriver webdriver

所有我想去中国的销售队伍。然后使用UTF单击产品linkbyText。我该怎么做?当我通过我的方法做的时候,我得到一个例外。

WebDriver driver = new FirefoxDriver();
driver.get("http://www.salesforce.com/cn/");
driver.findElement(By.linkText("\ufeff\u89e3\u51b3\u65b9\u6848")).click();
System.out.println("finish");

错误讯息:

  

线程“main”中的异常org.openqa.selenium.NoSuchElementException:   无法找到元素:{“method”:“link text”,“selector”:“解决方案”}   命令持续时间或超时:1.08秒有关此文档   错误,请访问:   http://seleniumhq.org/exceptions/no_such_element.html

2 个答案:

答案 0 :(得分:1)

如果我直接在字符串中使用中文字符,它的效果非常好。

driver.findElement(By.linkText("解决方案")).click();

或者使用XPath:

driver.findElement(By.xpath(".//a[text()='解决方案']")).click();

但是,最好的是匹配href属性而不是文本。

driver.findElement(By.xpath(".//a[@href='/cn/solutions/']")).click(); // XPath version
driver.findElement(By.cssSelector("a[href='/cn/solutions/']")).click(); // CSS selector version

答案 1 :(得分:0)

这是一个常见的误解,即linktext方法使用href值来查找元素。相反,它只需要链接的文本部分,在您的情况下是中文文本。

driver.findElement(By.linkText("解决方案")).click();

如果它的某些部分是可变的,您可以使用By.PartialLinkText方法将链接文本的常量部分作为参数传递

相关问题