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

元素只能通过Jenkins生成找到

危钱明
2023-03-14

我的自动化测试有问题,我的测试通过Eclipse运行没有问题。

但是当我想在Jenkins上运行这个测试时,它总是在同一行(在同一个选择器上)失败。

在端口21173上运行TestSuite启动ChromeDriver2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4)仅允许本地连接。测试运行: 1,失败: 1,错误: 0,跳过: 0,时间流逝: 34.563秒

结果:

失败的测试:Single_match_ticket. f: 85"超时在等待elem 19秒后超时...

以下是我的部分代码:

public void f() throws Exception {

    WebDriver driver;
    System.setProperty("webdriver.chrome.driver", "webdriver\\chromedriver.exe");



    // open Google Chrome




    driver = new ChromeDriver();
    // Maximize window
    driver.manage().window().maximize();
    driver.manage().deleteAllCookies();

    WebDriverWait wait = new WebDriverWait(driver, 19);

    driver.navigate().to("TESTED SITE");

  
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[name='username']")));

    // Set values for username and pass
    driver.findElement(By.cssSelector("input[name='username']")).sendKeys("1testuser");
    driver.findElement(By.cssSelector("input[name='password']")).sendKeys("testtest");
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("button[type='submit']")));

    // Click on LogIn button
    driver.findElement(By.cssSelector("button[type='submit']")).click();

    wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*[@id='userName']")));

    String Username = driver.findElement(By.xpath(".//*[@id='userName']")).getText();

    String Username1 = "1testuser";

    if (!Username1.equals(Username)) {
      throw new Exception("You are not logged in");

    } else {

      wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div.logout-btn.balance.visible")));
      String Balance = driver.findElement(By.cssSelector("div.logout-btn.balance.visible")).getText();

      String[] parts = Balance.split("\\.");
      String part1 = parts[0];

      String secondpart = "";

      if (part1.contains(",")) {

        secondpart = part1.replace(",", "");
      } else {
        secondpart = part1;

      }

      int BalanceInt = Integer.parseInt(secondpart);

      if (BalanceInt > 200) {

        wait.until(ExpectedConditions
          .visibilityOfElementLocated(By.cssSelector("a[id='PopularOpener'] > span[title='All']")));

        driver.findElement((By.cssSelector("a[id='PopularOpener'] > span[title='All']"))).click();

        

        for (int i = 0; i < 3; i++) {

共有3个答案

汪文光
2023-03-14

我用JavascriptExecutor解决了这个问题。

JavascriptExecutor js=(JavascriptExecutor)驱动程序
js。executeScript(“Categories.readPopular()”;

这个函数在J上运行良好

东方嘉佑
2023-03-14

或者,如果仅通过Jenkins失败,请检查本地计算机与通过Jenkins运行测试的计算机之间的差异。检查java版本、chrome驱动程序、操作系统版本等。

屈博
2023-03-14

测试在这一行失败:

wait.until(ExpectedConditions
      .visibilityOfElementLocated(By.cssSelector("a[id='PopularOpener'] > span[title='All']")));

尝试选择此元素,而不是像您那样使用css

By.cssSelector("a[id='PopularOpener'] > span[title='All']" 

通过其他方式选择它,例如id、名称、xpath

 类似资料:
  • 我是新的Webdriver,我不能让你知道的网站名称和凭据,因为这是一个正在进行的项目,我的公司。我陷入了一个位置,在该网站的一个页面中,有一个通过ajax在运行时生成的表,其中的所有数据也是在运行时生成的,该表中有一个元素,其xpath为,但当我试图使用webdriver查找该元素时,webdriver无法找到该元素,并且我得到一条错误消息,如下所示

  • 问题内容: 以下定位技术之间有什么区别? 而且,从 性能角度来看 ,哪种方法是通过id定位元素的最快方法? 问题答案: 您的问题很难回答,肯定会给出一个结论性的答案。实际上,我很想将此问题标记为“太宽泛”,其他答案和评论也支持该问题。 以您的为例。纵观Selenium来源, 大多数 驱动程序只是获取您提供的ID,然后将其传递给有线协议: 如您所知,每个浏览器供应商都在单独的二进制文件中实现自己的有

  • 请帮助我,我正在尝试选择一个图片,这是一个链接(一个网站上的培训师) 这是我的代码:

  • 我将Selenium与PHP WebDriver结合使用。我试图单击导航栏中的链接,该链接显示在HTML中,如下所示: 我正在尝试选择元素,然后单击它。但是,当我尝试使用xpath时,如下所示: 或 我得到以下错误: 没有这样的元素:无法定位元素:{“method”:“xpath”,“selector”:“/*[@showpage=“cards”]”}(会话信息:chrome=70.0.3538.

  • 我是DOM查询的新手,我想知道是否可以通过Xpath直接查询DOM元素,类似于下面提到的代码? 谢谢

  • 我需要在HTML中找到此元素 我就是这样做的 使用XPATH,由Chrome控制台生成: 使用XPATH,它正在寻找某种正则表达式: 最后使用XPATH,它通过页面精确到我的元素 他们都没有工作。All给出了一个例外 硒。常见的例外情况。InvalidSelectorException:Message:u'由于以下错误,给定的选择器无法找到具有xpath表达式的元素:\n语法错误:表达式不是合法表