当前位置: 首页 > 知识库问答 >
问题:

元素在使用chrome驱动程序时不可单击

秦才良
2023-03-14

我正试图使用chrome Driver从greytip web portal下载PDF格式的工资单。我正试图使用“driver.findelement(by.linktext(”salary“)).click();”点击链接工资。但我无法点击链接,并失败,但有以下例外。

WebDriverException:在点(198,139)不能单击元素。其他元素将收到click:...(警告:服务器没有提供任何stacktrace信息)命令持续时间或超时:37毫秒

而且当我运行chrome脚本时,会为bit Torrent打开一个额外的标签。所以当我运行程序时,会为“https://psdpl.greytip.in”打开一个标签,为bittorrent打开另一个标签。当我运行程序时,我如何处理不打开另一个bittorrent标签。

代码

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;

html" target="_blank">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;
    }
}

}

共有1个答案

牛凌
2023-03-14

是BitTorrent工具栏导致了这个问题。它是通过一个扩展进入Chrome的。要么完全卸载它,要么强迫Selenium告诉Chrome禁用所有扩展。这可以使用ChromeOptions类来完成:

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

使用addArgument方法,并给它这个争论,它告诉Chrome禁用所有用户扩展:

--disable-extensions
 类似资料:
  • 我在C#中使用selenium webDrive进行自动化工具创建。即自动化工作精细窗口7,但不工作窗口10。 前任。 单击“不工作”。 错误消息。

  • WebDriverException:元素在点(36,72)处不可单击。其他元素将收到click:...命令持续时间或超时:393毫秒 如果我使用,我不会收到任何警告。

  • 当我试图将元素放入元素中时,我面临一个问题。我尝试了两种方法来实现这一点,但不幸的是没有成功。 上面的代码获取所有DOM元素列表。 方法1: 当我尝试这个方法时,它总是返回第一个元素的文本,而不是相应的元素文本。 在搜索时,我发现了一个链接,有人问了和我一样的问题。 Selenium Webdriver在子元素中查找元素 当我尝试答案时,它给了我一个空白数组。 结果: 请建议我如何实现这一点,如何

  • 我将硒与python中的Chrome驱动程序一起使用。 我的问题是,硒给我一个错误,因为我试图访问铬下载页面上的元素(铬://下载)。例如,我试图获取文件url"http://file.jpg"。 但当我试图通过其id获取元素时,我得到了一个异常。 代码: 例外情况: 通过 使用 javascript 对我也不起作用。为什么当我可以在浏览器中看到元素时,我会收到 ?

  • 我正在尝试使用Selenium web驱动程序。我正在使用asp。net mvc。我已经设置了一个非常基本的测试。我基本上只是想打开浏览器。 但当我运行测试我得到这个错误消息 结果消息: 文件c:\chromedriver.exe\chromedriver.exe不存在。驱动程序可以在http://chromedriver.storage.googleapis.com/index.html下载 我

  • 问题内容: 我使用了明确的等待,并发出警告: 元素在点(36,72)不可单击。其他元素将获得点击:…命令持续时间或超时:393毫秒 如果我使用我不会收到任何警告。 问题答案: 你可以通过以下任一过程解决它们: 1.由于存在JavaScript或AJAX调用而无法单击元素 尝试使用: 2.由于元素不在视口中,因此无法单击 尝试用于将元素带入视口中: 3.在元素可单击之前,页面正在刷新。 在这种情况下