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

滚动返回和错误,即使在该位置元素是可点击的

庄浩言
2023-03-14

我正在抓取一个网站的数据,需要我向下滚动,然后单击下一个按钮到新页面。下面是我的代码:

WebElement next = driver.findElement(By.cssSelector("li.ng-scope[translate='next']"));
        row = (ArrayList<WebElement>) driver.findElements(By.cssSelector(".event-row-container.ng-scope"));
        ((JavascriptExecutor) driver).executeScript("window.scrollTo(0,"+next.getLocation().y+")");
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }


        WebDriverWait wait = new WebDriverWait(driver,10);

        wait.until(ExpectedConditions.elementToBeClickable(next)).click();
            next.click();

我最终收到以下错误:

线程“main”org.openqa.selenium.WebDriverException中的异常:未知错误:元素...在点(360,14)不可单击。其他元素将收到单击:...(会话信息:chrome=71.0.3578.98)(驱动程序信息:chrome驱动程序=2.42.591059(a3d9684d10d61aa0c45f6723b327283be1ebaad8),平台=Mac OS X 10.13.6x86_64)(警告:服务器没有提供任何堆栈跟踪信息)

我想抓取的网站是:https://www.sportpesa.co.ke/?sportId=1

共有1个答案

阮选
2023-03-14

Selenium有一个内置的滚动功能,如果您使用

WebElement element = driver.findElement(By.cssSelector("li.ng-scope[translate='next']"));
Actions actions = new Actions(driver);
actions.moveToElement(element);
actions.perform();

前提是标识符正确无误

 类似资料:
  • 当试图单击appl上的按钮时,我收到以下错误: WebDriverException:在点(x,y)不能单击元素。其他元素将收到click: 操作没有发生,但对象正在被识别。然后显示错误消息而失败。 请告诉我如何解决这个问题。谢谢

  • 查找元素的函数如下所示: 每次需要查找元素时,我都会调用这个函数。 有一个特定的有问题的按钮,有时工作,有时不工作。它给出了一个错误:selenium.common.exceptions。元素点击拦截异常:消息:元素点击拦截:元素…在点(840,12)处不可点击。其他元素将收到点击: 问题是有时它工作(当我使用更大的显示器时)有时它不工作,当我运行调试器时,等待几秒钟10/20,然后它变得可点击。

  • 问题内容: 我只能在Chrome浏览器中看到。 完整的错误消息显示为: “ org.openqa.selenium.WebDriverException:元素在点(411,675)不可点击。其他元素将获得点击:…” “将获得点击”的元素位于相关元素的侧面,而不是在其顶部且不重叠,也不在页面上移动。 我曾尝试添加偏移量,但这也不起作用。该项目位于显示的窗口中,无需滚动。 问题答案: 这是由以下3种类

  • “将接收点击”的元素位于所讨论的元素的旁边,而不是在其顶部,也不是与之重叠,也不是在页面中移动。 我试过添加一个偏移量,但那也不起作用。该项目在显示的窗口上,不需要滚动。

  • 我在跑咕噜-量角器-转轮。

  • 我用的是Selenium ChromeDriver v2.40,Chrome版本67。 上面两个findelement都可以,可以获取值,但不能点击,因为元素不可见。 所以我继续尝试预期条件,没有运气: 上面的代码返回: 它与Chromev67有任何向后兼容问题吗?