所有我想去中国的销售队伍。然后使用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
答案 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方法将链接文本的常量部分作为参数传递