如何使用 Selenium 迭代所有表页?

发布于 2024-11-08 12:22:13 字数 397 浏览 0 评论 0原文

我正在尝试查看从 1 到 50 的所有页面。但是,我在使用 iselementpresent 遍历所有页面时遇到了麻烦。

表页:

1 2 3 4 5 6 7 8 9 10 ...

我尝试遍历每个页

If iselementpresent(nextpagenumber) then
 click on nextPageNumber
else:
 print "done" 

但是,当 iselementpresent() 到达第 12 页时,它会说第 12 页不存在,然后给我一个错误。 iselementpresent 不是应该帮助我避免遇到错误吗?

I am trying to view all pages from 1-50. However, I'm having trouble iterating through all the pages with iselementpresent.

The table pages:

1 2 3 4 5 6 7 8 9 10 ...

I tried to iterate through each one with

If iselementpresent(nextpagenumber) then
 click on nextPageNumber
else:
 print "done" 

However, when iselementpresent() reaches page 12, it will say page 12 is NOT present, then gives me an error. Isn't iselementpresent supposed to help me avoid running into errors?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不交电费瞎发啥光 2024-11-15 12:22:13

基本思想是等待所有 AJAX 返回到切换到另一个表页面的页面。
尝试使用一对方法:Fluent wait + isElementDisplayed。

public WebElement fluentWait(final By locator){
        Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
                .withTimeout(30, TimeUnit.SECONDS)
                .pollingEvery(5, TimeUnit.SECONDS)
                .ignoring(NoSuchElementException.class);

        WebElement foo = wait.until(
new Function<WebDriver, WebElement>() {
            public WebElement apply(WebDriver driver) {
                        return driver.findElement(locator);
                }
                }
);
                           return  foo;              }     ;

选择每个表格页面上存在的任何 Web 元素,并以流畅的等待方式等待它,然后切换到下一个表格页面。
+添加额外的检查

String cssSelector= ....
driver.findElement(By.cssSelector(cssSelector)).isDisplayed()

希望这对你有用)

basic idea is to wait all the AJAX returns to the page on switching on another table page.
try using a pair of methods: fluent wait + isElementDisplayed.

public WebElement fluentWait(final By locator){
        Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
                .withTimeout(30, TimeUnit.SECONDS)
                .pollingEvery(5, TimeUnit.SECONDS)
                .ignoring(NoSuchElementException.class);

        WebElement foo = wait.until(
new Function<WebDriver, WebElement>() {
            public WebElement apply(WebDriver driver) {
                        return driver.findElement(locator);
                }
                }
);
                           return  foo;              }     ;

Select any web element that is present on EVERY table page and wait for it with the fluent wait and then swich to next table page.
+ add additional check with

String cssSelector= ....
driver.findElement(By.cssSelector(cssSelector)).isDisplayed()

Hope this works for you)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文