有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在系统中找到java Selenium元素,但在Jenkins中未找到

我的团队和我最近开始使用SeleniumWeb驱动程序和JUnit开发自动化脚本。我面临着一个问题,我真的对如何继续下去失去了想法。任何建议都是有用的

问题是:我有一个页面,在其中我将两个excel上传到一个表单中,然后按下submit按钮确认上传

上载完成后,它将用数据填充数据库,下一页将确认每个excel的行数

我正在尝试获取确认上传的元素,该元素是“标签”类型

所有这些都可以在本地、我的pc(windows 7、firefox webdriver)上成功运行

当上传我的代码时,当jenkins构建/执行它时,我得到一个“未找到元素”,测试失败

因为我无法直观地访问jenkins运行的内容,所以我用getPageSource()替换了元素确认(在jenkins上失败)

getPageSource()返回我希望看到的页面,其中包含我试图查找的元素(本地和jenkins上)

对可能发生的事情有什么想法吗

注释:

有两个10秒的线程。睡觉一个是在上载每个excel时,另一个是在单击“提交”后,以确保加载下一页并成功提交excel

我尝试使用xpath定位元素。事实上,我在Firefox中使用了Firebug提供给我的xpath,在Chrome中使用了WebDeveloper。只是为了确保xpath没有任何问题。两个XPath都在我的本地计算机上成功地找到了元素,但在jenkins上都失败了

在执行测试(本地和Jenkins上)时,我可以看到数据库按应有的方式填充

请原谅缺少代码,但我只能分享一些东西


共 (1) 个答案

  1. # 1 楼答案

    尝试使用fluentwait而不是线程。睡眠()。您的元素可能在10秒内未加载您可以尝试此操作

    // Waiting 30 seconds for an element to be present on the page, checking
     // for its presence once every 5 seconds.
       Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
       .withTimeout(30, SECONDS)
       .pollingEvery(5, SECONDS)
       .ignoring(NoSuchElementException.class);
    
    WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
     public WebElement apply(WebDriver driver) {
       return driver.findElement(By.id("foo"));
     }
    }); 
    

    如前所述here