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% 有效
但还是要感谢那些试图帮助我解决问题的人
所以我在 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% 有效 但还是要感谢那些试图帮助我解决问题的人