4

My Companys Web サイトは IE とのみ互換性があります。そのため、IDE を使用して webdriver スクリプトを記録することはできません。約 100 または 200 (正確な数ではありません) のテキスト ボックスとドロップダウンを持つ HTML ページがあります。

これを自動化する Java コードを書くのは非常に面倒です。

HTML ファイル自体を読み取り、対応するコードを生成するためのツールまたはユーティリティを提供してもらえますか? または、私のニーズを満たすユーティリティを開発する方法を教えてください。

例えば ​​:

このようなhtmlファイルを考えてみましょう

<html>
<body>
<input name = "employee_name" />
<select id = "designation">
<option value = "MD">MD</option>
<option value = "programmer"> Programmer </option>
<option value = "CEO"> CEO </option>
</option>

<body>
</html>

このファイルをユーティリティへの入力として与えると、このようなJavaファイルが生成されます

WebDriver driver = new InternetExplorerDriver();

WebElement employee_name = driver.findElement(By.name("employee_name"));
employee_name.sendKeys("...");

Select designation = new Select(driver.findElement(By.id("designation")));
designation.selectByVisibleText("...");

前もって感謝します !

4

1 に答える 1

2

「Selenium IDE」ではなく「Selenium Builder」を使用する必要がありますが、理論的には、次のようにグループ内のページから同様の要素をすべて取得できます。

List<WebElement> bodyinputs = driver
       .findElements( By.xpath("//div[@class='body']/input") );
List<WebElement> footeranchors = driver
       .findElements( By.xpath("//div[@class='footer']/a") );

次に、これらのグループごとに、リストをループ処理し、JavaScriptExecutor を使用して各要素の XPath を評価および把握し、XPath を各要素のハッシュ テーブルに格納します。

protected String getXPath() { 
        String jscript = "function getPathTo(node) {" + 
            "  var stack = [];" + 
            "  while(node.parentNode !== null) {" + 
            "    stack.unshift(node.tagName);" + 
            "    node = node.parentNode;" + 
            "  }" + 
            "  return stack.join('/');" + 
            "}" + 
            "return getPathTo(arguments[0]);"; 
        return (String) driver.executeScript(jscript, webElement); 
    } 

次に、最後のステップとして、HashTable を入力として使用して「By locators」を自動生成できます。

しかし、それを行ったとしても、どの By ロケーターがどの入力を取得し、どの By ロケーターが取得しないかをインテリジェントに把握するためのコードを記述する必要があります。

于 2013-11-24T00:43:21.377 に答える