这听起来很简单,但是为什么没有方法通过它来查找元素 内部文本而不使用xpath? 例如,有一个元素:
<button>Some Text</button>
,并且Selenium没有提供任何通过内部文本选择它的方法。 像这样:
driver.findElement(By.innerText("Some Text");
通过内部文本查找元素的另一种方法是什么? 我非常了解xpath,但是由于项目的限制,我无法使用它。
答案 0 :(得分:4)
有一种linkText
方法:
driver.findElement(By.linkText("Some Text"))
您也有partialLinkText
:
driver.findElement(By.partialLinkText("Partial Text"))
有关示例,请参见how-to-locate-element-by-link-text-and-partial-link-text-locator
编辑:
正如@Cajova_Houba所述,它仅适用于锚元素<a>
答案 1 :(得分:0)
尝试在XPath中使用方法。
String s = "the/quick/brown/fox/jumped/over/the/lazy/dog/";
System.out.println(s.substring(0, nthLastIndexOf(2, "/", s)+1)); // substring up to 2nd last included
System.out.println(s.substring(0, nthLastIndexOf(3, "/", s)+1)); // up to 3rd last inc.
System.out.println(s.substring(0, nthLastIndexOf(7, "/", s)+1)); // 7th last inc.
System.out.println(s.substring(0, nthLastIndexOf(2, "/", s))); // 2nd last, char itself excluded
希望这会起作用!
答案 2 :(得分:0)
我认为这适用于Java。
WebElement chosenElement;
List<WebElement> elements = driver.findElements(By.tagName("button"));
for(WebElement element:elements){
if(element.getText().equals("Some Text")){
chosenElement = element;
break;
}
}
答案 3 :(得分:-1)
根据Selenium documentation,似乎并非每个元素都可行。您可以尝试使用
By.linkText("link text")
或
By.partialLinkText("partial link text")
但这仅适用于锚点元素(<a>
)。