gpt4 book ai didi

java - 使用 Selenium 从 XML 文件填写表单

转载 作者:行者123 更新时间:2023-12-02 03:37:25 24 4
gpt4 key购买 nike

编辑:没关系,我想通了。必须执行 By.name() 而不是 By.id()

我正在尝试学习如何将 Selenium 与 XML 文件一起使用,但似乎遇到了问题。

步骤:

  • 我解析 XML 文件并将值保存到字符串中
  • 使用 Selenium WebDriver,打开 Google 并尝试在搜索框中插入一些值,然后点击“Google 搜索”。

这就是我陷入困境的地方。该值永远不会被输入,也不会点击按钮。

XML 文件:

<?xml version="1.0" encoding="UTF-8"?>

<TestData>
<url-name>
<url>http://www.google.com</url>
</url-name>

<user-details>
<email>test203@gmail.com</email>
<phone>(555)5559292</phone>
<folder>inbox</folder>
</user-details>
</TestData>

Java 代码:

import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.*;
import org.w3c.dom.*;

public class XMLTest
{
public static void main(String [] args)
{
try {
// Get xml file
File file = new File("input.xml");

// Prepare XML
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(file);

String url = document.getElementsByTagName("url").item(0).getTextContent();
String email = document.getElementsByTagName("email").item(0).getTextContent();
String phone = document.getElementsByTagName("phone").item(0).getTextContent();
String folder = document.getElementsByTagName("folder").item(0).getTextContent();

System.out.println("\n [Debug Info]\n ------------"
+ "\n Mail:\t\t" + url
+ "\n Email:\t\t" + email
+ "\n Phone:\t\t" + phone
+ "\n Folder:\t" + folder);

// Selenium code
WebDriver wd = new FirefoxDriver();

wd.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
wd.get(url); // Go to URL
wd.findElement(By.id("q")).sendKeys(phone); // Type into google search box
wd.findElement(By.id("btnK")).click(); // Click button
Thread.sleep(2000);

System.out.println("\n\n [Selenium]\n -----------");
System.out.println("\n Title:\t\t" + wd.getTitle()
+ "\n URL:\t\t" + wd.getCurrentUrl());

wd.close();

} catch(Exception e) {
e.printStackTrace();
}
}
}

浏览器打开,但仅停留在 Google 主页上。任何帮助将不胜感激,谢谢!

最佳答案

“q”和“btnK”是元素名称,而不是 ID。试试这个。

 wd.findElement(By.name("q")).sendKeys(phone); // Type into google search box
wd.findElement(By.name("btnK")).click(); // Click button

关于java - 使用 Selenium 从 XML 文件填写表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37278891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com