java - 在 selenium 中使用 for 循环时如何获取当前 url 并将其粘贴到邮件中(作为表格格式)
问题描述
嗨,我正在尝试获取页面的当前 URl,该页面需要在邮件中形成表格格式,并且邮件需要发送给收件人。
我已经编写了代码,我需要获取在 for 循环中生成的 URL 并将其作为表格格式粘贴到邮件中
我需要重新调整代码吗?因为现在邮件在操作之前被触发,而且我正在获取 for 循环中生成的值。
还有其他方法可以执行此操作吗?
public class Mail extends JFrame {
public static String start = "<html>\n" +
"<head>\n" +
"<style>\n" +
"table, th, td {\n" +
" border: 1px solid black;\n" +
" border-collapse: collapse;\n" +
"}\n" +
"</style>\n" +
"</head>\n" +
"<body>\n" +
"Hi,<br>";
public static String htmlMsg ="";
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Mail frame = new Mail();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Mail() {
htmlMsg = htmlMsg.concat("<br><br>Mobile TestRail Links <br>"+
" <table style=\"width:100%\">\n" +
" <tr bgcolor=\"#F83911\">\n" +
" <th>Locale</th>\n" +
" <th>TestRail Link</th>\n" +
" </tr>\n");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 512, 263);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblNewLabel = new JLabel("zzz:");
lblNewLabel.setBounds(10, 11, 104, 20);
contentPane.add(lblNewLabel);
JComboBox comboBox = new JComboBox();
comboBox.addItem("abc");
comboBox.addItem("cde");
comboBox.setBounds(124, 11, 331, 20);
contentPane.add(comboBox);
JLabel lblNewLabel_1 = new JLabel("1");
lblNewLabel_1.setBounds(10, 53, 79, 34);
contentPane.add(lblNewLabel_1);
List<JCheckBox> locales = new ArrayList<JCheckBox>();
JCheckBox chckbxNewCheckBox = new JCheckBox("ram");
chckbxNewCheckBox.setBounds(17, 94, 63, 23);
contentPane.add(chckbxNewCheckBox);
locales.add(chckbxNewCheckBox);
JCheckBox chckbxNewCheckBox_1 = new JCheckBox("john");
chckbxNewCheckBox_1.setBounds(104, 94, 63, 23);
contentPane.add(chckbxNewCheckBox_1);
locales.add(chckbxNewCheckBox_1);
JCheckBox chckbxNewCheckBox_2 = new JCheckBox("man");
chckbxNewCheckBox_2.setBounds(177, 94, 72, 23);
contentPane.add(chckbxNewCheckBox_2);
locales.add(chckbxNewCheckBox_2);
JCheckBox chckbxNewCheckBox_3 = new JCheckBox("boy");
chckbxNewCheckBox_3.setBounds(17, 133, 63, 23);
contentPane.add(chckbxNewCheckBox_3);
locales.add(chckbxNewCheckBox_3);
JCheckBox chckbxNewCheckBox_4 = new JCheckBox("qwe");
chckbxNewCheckBox_4.setBounds(104, 133, 63, 23);
contentPane.add(chckbxNewCheckBox_4);
locales.add(chckbxNewCheckBox_4);
JCheckBox chckbxNewCheckBox_5 = new JCheckBox("asd");
chckbxNewCheckBox_5.setBounds(177, 133, 72, 23);
contentPane.add(chckbxNewCheckBox_5);
locales.add(chckbxNewCheckBox_5);
JCheckBox chckbxNewCheckBox_6 = new JCheckBox("987");
chckbxNewCheckBox_6.setBounds(17, 174, 63, 23);
contentPane.add(chckbxNewCheckBox_6);
locales.add(chckbxNewCheckBox_6);
JCheckBox chckbxNewCheckBox_7 = new JCheckBox("321");
chckbxNewCheckBox_7.setBounds(104, 174, 63, 23);
contentPane.add(chckbxNewCheckBox_7);
locales.add(chckbxNewCheckBox_7);
JCheckBox chckbxNewCheckBox_8 = new JCheckBox("qwe");
chckbxNewCheckBox_8.setBounds(177, 174, 72, 23);
contentPane.add(chckbxNewCheckBox_8);
locales.add(chckbxNewCheckBox_8);
JButton btnNewButton = new JButton("qweert");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if(comboBox.getSelectedItem().equals("abc"))
{
System.setProperty("webdriver.chrome.driver","call from path");
WebDriver aru=new ChromeDriver();
aru.manage().window().maximize();
aru.get("https://example.com");
//Login
aru.findElement(By.id("name")).sendKeys("zzz");
aru.findElement(By.id("password")).sendKeys("yyy");
aru.findElement(By.id("button_primary")).click(); //Login
//aru.findElement(By.xpath("//*[@id=\"button_primary\"]/span")).click();
//aru.findElement(By.className("loginpage-button-sso-disable loginpage-button-sso-disable-hover loginpage-button-sso-disable-active")).click();
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(JCheckBox checkbox : locales)
{
if(checkbox.isSelected())
{
aru.get("xyz.com");
aru.findElement(By.xpath("//*[@id=\"suite-22496\"]/div[2]/div[1]/a")).click();
try {
Thread.sleep(3000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
aru.findElement(By.xpath("//*[@id=\"content-header\"]/div/div[2]/a[1]")).click();
aru.findElement(By.xpath("//*[@id=\"includeSpecific\"]")).click();
aru.findElement(By.xpath("//*[@id=\"includeSpecificInfo\"]/a")).click();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
aru.findElement(By.xpath("//*[@id=\"selectCasesNode-744350\"]/input")).click();
aru.findElement(By.id("selectCasesSubmit")).click();
aru.findElement(By.id("name")).clear();
DateFormat today = new SimpleDateFormat("MM/dd/yyyy ");
Date palani = new Date();
String content= today.format(palani);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
aru.findElement(By.id("name")).sendKeys("aaa" + checkbox.getText() + " - "+content);
//Mail text locales
htmlMsg = htmlMsg.concat(
" <tr>\n" +
" <td align=\"center\">" + checkbox.getText() + "</td>\n" +
" <td align=\"center\">" + aru.getCurrentUrl()+ "</td>\n" +
" </tr>\n");
htmlMsg = htmlMsg.concat("</table><br><br>\n");
}
else
{
}
}
}
else
{
JOptionPane.showMessageDialog(null, "Please select from list");
}
}
});
btnNewButton.setBounds(285, 122, 169, 34);
contentPane.add(btnNewButton);
}
public static void se(String msg) throws AddressException, MessagingException {
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.example.com");
Session session = Session.getDefaultInstance(props);
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("syz@gmail.com"));
message.addRecipients(Message.RecipientType.TO, InternetAddress.parse("abc@gmail.com"));
message.setSubject("Vurrent URlLinks");
msg = start + msg +
"<br>Note: This is an automated email , please don't reply to this email. "
"</body>\n" +
"</html>";
System.out.println(msg);
message.setContent(msg, "text/html");
Transport.send(message);
System.out.println("=====Email Sent=====");
} catch (MessagingException e) {}}
}
解决方案
推荐阅读
- python-3.x - 在客户端 PC 上写入文件并运行它
- android - 有没有办法单击按钮/图像按钮并创建一个下拉文本视图,将其他按钮推离屏幕?
- excel - Cannot apply a VBA Autofilter to a table which I export to a CSV
- influxdb - 如何在电报中设置测量、字段/标签键和值?
- python - 如何在 for 循环和 if 语句中简化 for 循环?
- python - 为什么这个简单的递归树遍历算法会失败?
- javascript - TypeError:地图不是函数
- c# - Class Object, Incorporating a separate class as a field
- javascript - 如何使用计时器更改 div 内部
- plesk - 安装后 Plesk 配置卡住