我正在测试文本编辑器的功能,我希望能够选择文本(单词或标签之间的字符串),然后点击按钮进行编辑(B表示粗体,或I表示斜体)。就像Stackoverflow中使用的编辑器一样。这将添加一个html B标记,使其显示为粗体。 我知道以下Xpath会导致一串文字,但我无法找到如何选择此文本或如何在此文本中选择单词。
这是页面源的一部分(文本编辑器在iframe中)
select col1, col2, . . .
from (select t1.* from table1 t1
union all
select t2.* from table2 t2
) tt
group by col1, col2, . . .
having count(*) = 1;
这个地方
<html>
<head>
<body>
<p>
This is a line of text to test Bold
</p>
<p>
This is a line of text to test Italic
</p>
</body>
导致文字:
driver.findElement(By.xpath("/html/body/p[1]")
我想选择&#39; Bold&#39; (如果这更容易,则整个句子),然后单击文本上方的按钮使其变为粗体
答案 0 :(得分:1)
您可以做的是在<html>
内使用JLabel
标记。
我的想法如下:
boldButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String formattedText = "<html><b>" + text + "</b></html>";
label.setText(formattedText);
}
}
italicButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String formattedText = "<html><i>" + text + "</i></html>";
label.setText(formattedText);
}
}
不幸的是,我不知道你的文本编辑器是什么样的,但这是我解决这个问题的方法。
无论如何,您仍然可以使用HTML标记来格式化文本(例如,在TextArea
中)。为了获得突出显示/选定的项目,您可能需要查看此主题how to get highlighted text in jtextarea。
所以你可以尝试这样的事情:
// retrieve selected text from text area
String selectedText = textArea.getSelectedText();
// get whole text
StringBuffer text = new StringBuffer(textArea.getText());
// remove the selected text
text.remove(textArea.getSelectionStart(), textArea.getSelectionEnd());
// make the selected text, e.g., bold.
selectedText = "<b>" + selectedText + "</b>";
// add the bold text to the whole text
text.insert(textArea.getSelectionStart(), selectedText);
//eventually apply outer <html> tags
String result = "<html>" + text.toString() + "</html>";
// set new text (with bold element) to the text area
textArea.setText(result);
请注意我没有试过这个,所以你可能会调整一些东西以使其有效。
答案 1 :(得分:1)
试试这个
Actions a = new Actions(driver);
a.doubleClick(driver.findElement(By.xpath("/html/body/p[1]")).build().perform();