0

Chrome driver.i を使用して、greytip Web ポータルから給与明細を PDF としてダウンロードしようとしています。「driver.findElement(By.linkText("Salary")).click();".リンクをクリックできず、次の例外で失敗しました。

エラー

org.openqa.selenium.WebDriverException: 要素はポイントでクリックできません (198、139)。他の要素はクリックを受け取ります: ... (警告: サーバーはスタックトレース情報を提供しませんでした) コマンド期間またはタイムアウト: 37 ミリ秒

また、スクリプト chrome を実行するたびに、bit torrent 用の追加のタブが 1 つ開きます。ここで、プログラムを実行すると、「https://psdpl.greytip.in」用のタブが 1 つ開かれ、bittorrent 用の別のタブが開かれます。プログラムを実行したときに、別の bittorrent タブを開かないように処理します。

ここにコードとスクリーンショットを添付します。bittorrent タブ<code>ここにコードを入力</code>ここ に画像の説明を入力してください給与リンク

コード

package com.webdriver.tests;

import static org.junit.Assert.*;

import org.junit.Test;
import java.io.File;
import java.io.IOException;
import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeDriverService;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;

public class PaySlipPDF {
private WebDriver driver;
private String baseUrl;
private StringBuffer verificationErrors = new StringBuffer();

@Before
public void setUp() throws Exception {
    System.setProperty("webdriver.chrome.driver", "C:\\soleti\\D-Drive\\Selenium\\chromedriver\\chromedriver.exe");
    driver = new ChromeDriver(); 
baseUrl = "https://psdpl.greytip.in/";
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}

@Test
public void testPayslip() throws Exception {
    driver.get(baseUrl + "/login.do");
            driver.findElement(By.id("j_username")).clear();
    driver.findElement(By.id("j_username")).sendKeys("101786");
    driver.findElement(By.id("j_password")).clear();
    driver.findElement(By.id("j_password")).sendKeys("password");
    driver.findElement(By.id("login-button")).click();
    driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
    //driver.findElement(By.xpath("//*[@id='home-page']/div[1]/div[1]/ul/li[2]/a")).click();
    WebElement elementToClick = driver.findElement(By.xpath("//*[@id='home-page']/div[1]/div[1]/ul/li[2]/a"));
    System.out.println(elementToClick);
    // Scroll the browser to the element's Y position
    ((JavascriptExecutor) driver).executeScript("window.scrollTo(0,"+elementToClick.getLocation().y+")");
    // Click the element
    elementToClick.click();
    //driver.findElement(By.linkText("Salary")).click();

    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    driver.findElement(By.linkText("View Payslips")).click();
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    new Select(driver.findElement(By.id("payroll"))).selectByVisibleText("Mar 2012");
    driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
    driver.findElement(By.className("btn btn-gts-print")).click();



}

@After
public void tearDown() throws Exception {
    //driver.quit();
    String verificationErrorString = verificationErrors.toString();
    if (!"".equals(verificationErrorString)) {
        fail(verificationErrorString);
    }
}

private boolean isElementPresent(By by) {
    try {
        driver.findElement(by);
        return true;
    } catch (NoSuchElementException e) {
        return false;
    }
}

}

4

3 に答える 3

3

問題を引き起こしているのは BitTorrent ツールバーです。拡張機能によってChromeに起動されます。完全にアンインストールするか、Selenium に強制的に Chrome にすべての拡張機能を無効にするように指示してください。これは、ChromeOptions クラスを使用して実行できます。

http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/chrome/ChromeOptions.html

addArgument メソッドを使用して次の引数を指定します。これにより、すべてのユーザー拡張機能を無効にするよう Chrome に指示されます。

--disable-extensions
于 2012-12-02T22:56:13.050 に答える
0

ブラウザの設定を確認し、インストールされているビット トレント ツールバーによってデフォルトのホームページが変更されていないかどうかを確認します。不要な場合は、ブラウザから bitTorrent ツールバーをアンインストールして、セレン プログラムを再実行してみてください。お役に立てれば。

于 2012-12-02T12:34:23.287 に答える
0

この問題は、システムにインストールされている Chrome に特に関連しています.Google Chrome をアンインストールしてから再インストールしてください..これで問題が解決します..:)

于 2012-12-02T17:18:38.327 に答える