【问题标题】:Click on Follow Buttons in Instagram using Selenium Java使用 Selenium Java 在 Instagram 中单击关注按钮
【发布时间】:2020-06-11 03:02:53
【问题描述】:

enter image description here

您好,尝试使用 java 自动点击按钮,但在 for 循环中使用 javascriptexecutor 时遇到问题。这是我的代码:

     List<WebElement>clickOnFollowButton = driver.findElements(By.xpath("//button[contains(text(),'Follow')]"));
        for (int i = 0; i < clickOnFollowButton.size() ; i++) {
            driver.findElements(By.xpath("//button[contains(text(),'Follow')]")).get(i).click();

            ((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", clickOnFollowButton);

        }

非常感谢您的帮助。

【问题讨论】:

    标签: java css selenium xpath


    【解决方案1】:

    我认为"arguments[0].scrollIntoView();"这个参数应该在.click之前。

    并且你必须让列表中的每个成员都成为WebElement变量,然后才能被JavascriptExecutor执行,然后点击它:

    for (int i = 0; i < clickOnFollowButton.size() ; i++) {
        WebElement element = driver.findElements(By.xpath("//button[contains(text(),'Follow')]")).get(i);
        ((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", element);
        element.click();
    }
    

    顺便说一句,还有另一种方法可以使用 for each 创建循环列表,如下所示:

    List<WebElement> clickOnFollowButton = driver.findElements(By.xpath("//button[contains(text(),'Follow')]"));
    for(WebElement element: clickOnFollowButton) {
        ((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", element);
        element.click();
    }
    

    【讨论】:

    • 谢谢@frianH 它正在工作。您能否还建议如何避免每天点击相同的用户以及我应该将隐式等待方法放在哪里?非常感谢
    • @serdar2225 你可以在初始化driver之后放置隐式等待,例如:driver = new ChromeDriver(); driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS) ;
    • @serdar2225 和你的问题what to do to avoid clicking the same users every day,我不明白,请多解释。
    • 我想这解释得更好:stackoverflow.com/questions/62337082/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    相关资源
    最近更新 更多