我正在使用Java中的Selenium运行一些UI测试,从UI中获取文本片段,以进行一些自动化测试。
我的UI上有以下元素:
<span id="MainContent" class="control-label">
"Text 1"
<br>
"Text 2"
<br>
"Text 3"
</span>
我需要单独挑出3个单独的文本中的每一个,并单独对每个文本进行断言。
我的定位器有问题,因为当我运行测试时,selenium告诉我无法定位元素。
对于第一个文本项(“Text 1”),我使用了以下无法正常工作的定位器代码。我已经尝试了其他一些变种,但总是无法找到定位器错误。救命啊!
By category = By.xpath("//span[@id='MainContent'][1]");
答案 0 :(得分:2)
根据您提供的用于提取文本的HTML,例如文字1 ,文字2 和文字3 您可以使用以下解决方案:
WebElement myElement = driver.findElement(By.xpath("//span[@class='control-label' and @id='MainContent']"));
// to extract the text "Text 1"
String myText1 = ((JavascriptExecutor)driver).executeScript('return arguments[0].firstChild.textContent;', myElement).toString();
// to extract the text "Text 2"
String myText2 = ((JavascriptExecutor)driver).executeScript('return arguments[0].childNodes[3].textContent;', myElement).toString();
// to extract the text "Text 3"
String myText3 = ((JavascriptExecutor)driver).executeScript('return arguments[0].lastChild.textContent;', myElement).toString();
答案 1 :(得分:1)
技术上没有3个元素,技术上有一个元素。您可以做的是获取文本并根据分隔符将其拆分。
By category = By.xpath("//span[@id='MainContent']") ;
String allText = driver.findElement(category).getText();
String[] allTextArray = allText.split("<br>");
String text1 = allTextArray[0];
String text2 = allTextArray[1];
String text3 = allTextArray[2];