选择单个单词或字符串(双击)以进行编辑

时间:2016-01-05 11:41:33

标签: java eclipse selenium select

我正在测试文本编辑器的功能,我希望能够选择文本(单词或标签之间的字符串),然后点击按钮进行编辑(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; (如果这更容易,则整个句子),然后单击文本上方的按钮使其变为粗体

2 个答案:

答案 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();