将Selenium与Java结合使用 - 无法识别元素(在表格中)

时间:2016-12-23 22:01:47

标签: java selenium

我整天都在堆栈溢出,试图寻找这个问题的答案。我觉得我已经接近了,但无论我做什么,我仍然无法让程序通过。这是我想要做的:

我有一个按周计算的在线日历。每周都可以点击,并更改计划以匹配该周。这就是我试图点击的特定行看起来像:

 <tr align="right" class="Calendar" id="Week5" valign="bottom"
     onmouseover="highlightRow( 5, 'high' );" onmouseout="highlightRow(5, 'low' );"
 onclick="selectRow( 5 );" bgcolor="#ccffcc"> 

                        <td>25</td>
                        <td>26</td>
                        <td>27</td>
                        <td>28</td>
                        <td>29</td>
                        <td>30</td>
                        <td>31</td>
                        <td></td>
                      </tr>

所以我认识到这是一个鼠标悬停,它不会变成可点击的,直到你将它悬停在它上面(对吗?)无论我做什么,我都无法将Week5识别为可点击的元素。我尝试添加这个:

WebDriverWait wait = new WebDriverWait(driver, 10);
        WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("Week5")));

但它仍然告诉我它无法找到Week5作为元素。我也试过这个

   Actions builder = new Actions(driver);
            builder.moveToElement(driver.findElement(By.id("Week5"))).click().build().perform();

我觉得我越来越接近,但最大的问题是我无法识别这个元素。我尝试使用xpath作为表,但这也没有用。也许我做得不对。有人可以帮助这个n00b而不需要很少的正式计算机科学培训吗?

谢谢, 斯科特

1 个答案:

答案 0 :(得分:0)

尝试使用以下定位器

By.xpath("//tr[contains(@id, 'Week5')]")

另外,检查当前定位器的元素是否在网页上! 希望,它会有所帮助,有关您的问题的答案的更多信息,请在网页上发送链接,您现在正在使用它。