gpt4 book ai didi

java - Selenium ScrollTable 到目标元素

转载 作者:太空宇宙 更新时间:2023-11-04 10:25:40 25 4
gpt4 key购买 nike

我正在将 Selenium WebDriver 与 Java 和 ChromeDriver 结合使用。

我想单击下面所示表格中的一个单元格,但由于表格溢出并且有滚动条,因此无法保证该单元格实际上位于 View 中。

enter image description here

我根据与我的项目相关的一些参数通过 XPath 获取单元格。我尝试了类似以下的内容

String cellXPath = "/html/body/div/div/section/div/div/div[2]/div/div/div/table/tbody/tr[2]/td[2]/div/table/tbody/tr[" + (c.getRow()+2) + "]/td/*[" + (c.getCol()+1) + "]";
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(cellXPath)));
WebElement element = WebDriverUtility.driver.findElement(By.xpath(cellXPath));
System.out.println("CELL: " + element.toString());
jse.executeScript("arguments[0].scrollIntoView(true)", element);
Thread.sleep(500);
element.click();

该元素可以正常打印,并且有一个与之关联的 xpath。不会发生滚动,也不会发生点击。

当前在 element.click() 行也遇到此错误:

org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document

编辑:

您可以在此处找到该页面的源代码:http://libcal.library.ucsb.edu/rooms.php?i=12405

我已经尝试了另一个问题中的解决方案,其中我等待附加元素或显式 Thread.sleep,但问题是该元素隐藏在表中,因为当页面加载时,表会自动向右滚动一定量。因此,可以找到该元素,但不能单击该元素。我需要通过调用单元格滚动将元素放回到 View 中,然后触发单击事件。希望澄清评论

最佳答案

使用ExpectedConditions.elementToBeClickable而不是ExpectedConditions.visibilityOfElementLocated

您可以将其拆分为:

WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.xpath(cellXPath)));

关于java - Selenium ScrollTable 到目标元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50557811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com