我正在开发一个硒项目。我正在尝试登录一个网站。我可以使用正常方法轻松登录,但是当我运行代码并发送登录请求时,我收到 ERR_HTTP2_PROTOCOL_ERROR。我不知道我该怎么办?
我通过创建 junit 测试项目添加了 selenium 库。我已经编码了在我的项目中正常完成的步骤。当我运行代码时,第一阶段运行顺利。但是,当我输入电子邮件地址并发送继续下一阶段的请求时,我收到此错误。
您可以在此视频中观看我遇到的问题: https://www.youtube.com/watch?v=tQDaiFv1DGI
注意:此问题仅在使用 selenium web 驱动程序时出现。正常使用没有这个问题。
针对这些机器人的安全重要吗?
我做了一些研究,但无法得出结论。 我重置了 Cashe 设置。 我将驱动程序更新到最新版本。 我禁用了http 2方法,但是这次我根本无法发送请求。
我正在分享我的 Junit 代码:
// Generated by Selenium IDE
package com.example.test;
import org.junit.Test;
import org.junit.Before;
import org.junit.After;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.core.IsNot.not;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.util.*;
import java.net.MalformedURLException;
import java.net.URL;
public class LoginTest {
private WebDriver driver;
private Map<String, Object> vars;
JavascriptExecutor js;
@Before
public void setUp() {
System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
// options.addArguments("--disable-http2");
options.addArguments("--no-cache");
// options.addArguments("--no-store");
// options.addArguments("--must-revalidate");
//options.setPageLoadStrategy(PageLoadStrategy.EAGER);
// options.addArguments("--aggressive-cache-discard") ;
driver = new ChromeDriver(options);
js = (JavascriptExecutor) driver;
vars = new HashMap<String, Object>();
}
@After
public void tearDown() {
driver.quit();
}
@Test
public void login() {
driver.get("https://www.sephora.com.tr/giris-yap");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
driver.findElement(By.id("footer_tc_privacy_button_2")).click();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
driver.findElement(By.id("dwfrm_crmsephoracard_email")).click();
driver.findElement(By.id("dwfrm_crmsephoracard_email")).sendKeys("[email protected]");
WebElement emailInput = driver.findElement(By.id("dwfrm_crmsephoracard_email"));
// try {
// Thread.sleep(10000);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
emailInput.sendKeys(Keys.ENTER);
try {
Thread.sleep(1000000);
} catch (InterruptedException e) {
e.printStackTrace();
}
driver.findElement(By.className("field-wrapper has-input")).sendKeys("MyPassword");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
driver.findElement(By.id("field-wrapper has-input")).sendKeys(Keys.ENTER);
}
}
我也遇到了同样的问题。我认为您已被 SEPHORA 或 AKAMAI 屏蔽。但我不确定它是基于您的 IP 还是您的自动化代码。如果你已经解决了这个问题。可以分享给我吗?