2

Selenium webdriver を使用してアプリケーションを自動化しています。以下は正常に動作するコードです。

ここにコードを入力してください:

import java. util.concurrent. TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.JavascriptExecutor;

import com.thoughtworks.selenium.SeleneseTestCase;

public class MonTaxRep1 extends SeleneseTestCase{

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
WebDriver driver = new FirefoxDriver();
driver.get(" URL ");
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
WebElement un= driver.findElement(By.name("username"));
un.sendKeys("clientremote");
driver.findElement(By.name("password")).sendKeys("12345678");
driver.findElement(By.name("submit")).click();
//  find the element and click on signin
//  driver.findElement(By.id("loginButton")).click();
driver.findElement(By.xpath("//a/span[contains(text(),'Thailand')]")).click();
driver.findElement(By.linkText("Williams Limited Thailand")).click();
driver.findElement(By.xpath("//map[@id='Map']/area[3]")).click();
driver.findElement(By.cssSelector("a > img")).click();
driver.findElement(By.xpath("//img[@onclick=\"showItem('_self')\"]")).click();
new Select(driver.findElement(By.name("pay_year"))).selectByVisibleText("2010");
new Select(driver.findElement(By.name("pay_month"))).selectByVisibleText("January");

driver.findElement(By.linkText("Monthly Tax Report")).click();
driver.findElement(By.name("g_title")).sendKeys("Test1");
driver.findElement(By.xpath("//input[@value='Download']")).click();

セレンがダウンロードリンクをクリックすると、デフォルトで2つのラジオボタンを含むポップアップウィンドウが表示され、オプションで開くためにラジオボタンがクリックされます。そのラジオボタンをオプションとして保存に切り替え、[OK]ボタンをクリックする必要があります。[OK] ボタンをクリックすると、pdf ファイルが特定のローカル ドライブに保存されます。このために、以下のコードを使用しましたが、機能していません。

//Before  opening pop-up get the main window handle 
String mainWindowHandle=driver.getWindowHandle();
//open the pop-up window(i.e click on element which causes open a new window)
driver.findElement(By.xpath("//input[@value='Download']")).click();

//Below code returns all window handles as set
Set s = driver.getWindowHandles();

Iterator ite = s.iterator();
while(ite.hasNext())
{
String popupHandle=ite.next().toString();
if(!popupHandle.contains(mainWindowHandle))
{
driver.switchTo().window(popupHandle);
}

ダウンロードしたpdfファイルを開いて1行ずつ読むことができ、その中にあるテキストを比較できるかどうか疑問に思っていましたが、これは可能ですか??

4

2 に答える 2

2

簡単な答え:これは何度も聞かれています。検索してください。

長くて正しい答え: 現在 (2012/11) の時点では、WebDriver 経由では実行できません。これは、Selenium プロジェクトで最も要望の多かった機能の 1 つです。次のいずれかを試すことができます。

  1. HttpURLConnectionまたはApache HttpComponentsを使用して、指定されたリンクをリクエストします。この方法でファイルをダウンロードすることもできますが、通常は、ファイルをダウンロードできることを確認するために 200 OK 応答をアサートするだけです (通常、アプリケーションをテストするときにファイルは実際には必要ないため)。
  2. 任意の Java アプローチを使用してファイルを取得します。または、Selenium で使用するために誰かが作成したこのツール。
  3. Robotクラスを使用してDown arrowEnterまたは何かを押すだけです。ただし、これは特定のブラウザと OS でのみ機能することに注意してください。他の構成では壊れます。
于 2012-11-18T16:44:54.287 に答える
1

Firefox では、次のコードをセレン テストの setUp メソッドに追加することでこれを修正できます。

profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf,application/x-pdf");

PDF 以外にダウンロードしたい他の種類のドキュメントがある場合は、ダウンロードしようとしているドキュメントの MIME タイプを調べて、カンマ区切りのリストに追加する必要があります。

于 2014-04-29T22:30:04.830 に答える