使用chrome驱动程序无法点击元素

时间:2012-12-02 07:59:27

标签: selenium selenium-webdriver

我正在尝试使用chrome driver从greytip门户网站下载payslip as PDF。我正在尝试使用“driver.findElement(By.linkText(”Salary“))点击链接工资。”click();“。但我无法点击该链接,但因以下异常而失败。

错误

org.openqa.selenium.WebDriverException:元素在点(198,139)处无法点击。其他元素将收到点击:...(警告:服务器未提供任何堆栈跟踪信息) 命令持续时间或超时:37毫秒

而且,当我运行脚本chrome时,打开一个额外的tab for torrent.so这里当我运行程序时,一个选项卡打开“https://psdpl.greytip.in”,另一个选项卡打开bittorrent.How can i当我运行程序时,不要打开另一个bittorrent选项卡。

这里我附上了代码和屏幕shots.enter image des bittorrent tab<code>enter code here</code> cription salary link

代码

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;
    }
}

}

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

检查浏览器设置,查看安装的位torrent工具栏是否更改了默认主页。如果不需要,尝试从浏览器卸载bitTorrent工具栏并重新运行您的selenium程序。希望这会有所帮助。

答案 2 :(得分:0)

此问题与您系统上安装的Chrome格式有关。卸载google chrome并重新安装..这将解决您的问题.. :)