Instagram Selenium 登录 Java 不工作

Instagram Selenium Login Java not Working

所以我在 Android Studio 中用 Java 开始了一个新的 Selenium 项目,看起来我 运行 遇到了问题。我想做的是打开 instagram,然后点击唯一必要的 cookie,填写名称和密码,直到那时它才能正常工作,但在那之后,无论我尝试什么,它都不会按下登录按钮,它只会停止 所以这是我的代码(我当然更改了我的用户名和密码):

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public static void main(String[] args) {
        System.setProperty("webdriver.safari.driver","/usr/bin/safaridriver");
        SafariDriver driver = new SafariDriver();
        driver.get("https://www.instagram.com/accounts/login/?hl=en&source=auth_switcher");

        new WebDriverWait(driver, Duration.ofSeconds(10));
        driver.findElement(By.className("HoLwm")).click();
        driver.findElement(By.name("username")).sendKeys("xyzzy");
        driver.findElement(By.name("password")).sendKeys("xyzzy");
        new WebDriverWait(driver, Duration.ofSeconds(10));
        WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(20));
        wait.until(ExpectedConditions.elementToBeClickable(By.xpath("\"//button[@type='submit']\"")));
        driver.findElement(By.xpath("\"//button[@type='submit']\"")).click();
        new WebDriverWait(driver, Duration.ofSeconds(10));
        }

不知何故我得到了一个错误:

Exception in thread "main" org.openqa.selenium.TimeoutException: Expected condition failed: waiting for element to be clickable: By.xpath: "//button[@type='submit']" (tried for 20 second(s) with 500 milliseconds interval)
Build info: version: '4.1.3', revision: '7b1ebf28ef'

 Driver info: org.openqa.selenium.safari.SafariDriver
Capabilities {acceptInsecureCerts: false, browserName: Safari, browserVersion: 15.4, javascriptEnabled: true, platform: MAC, platformName: MAC, safari:automaticInspection: false, safari:automaticProfiling: false, safari:diagnose: false, safari:platformBuildVersion: 20G527, safari:platformVersion: 11.6.5, safari:useSimulator: false, setWindowRect: true, strictFileInteractability: false, webkit:WebRTC: {DisableICECandidateFiltering: false, DisableInsecureMediaCapture: false}}
Session ID: D249B2A9-5C9F-4000-A778-8D9B4D81A240
 at org.openqa.selenium.support.ui.WebDriverWait.timeoutException(WebDriverWait.java:87)
 at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:231)
 at com.example.instagramrepost.MainActivity.main(MainActivity.java:39)

谁能帮帮我谢谢

如果您添加了登录页面示例html代码,将会非常有帮助,您可以使用 Web Inspector (Safari) 或 Web Developer (Chrome) 来捕获页面代码。

但凭空猜测,您的 xpath 中似乎有额外的 \",可能是由于 copy-pasting。

尝试 By.xpath("//button[@type='submit']") 而不是 By.xpath("\"//button[@type='submit']\""),它应该能找到您的按钮。

我找到了答案:

WebElement element = driver.findElement(By.cssSelector("button[type='submit']"));
    ((JavascriptExecutor)driver).executeScript("arguments[0].click();", element);

此代码 100% 有效 但还是要感谢那些试图帮助我解决问题的人