Я пытаюсь автоматизировать следующие действия:
Я получаю Expection в "основном" состоянии потока Ссылка на элемент: элемент не прикреплен к документу страницы в методе miButton ().
Пожалуйста, обратитесь к разделу с подробностями об ошибке.
HTML код
Базовый класс:
public class Base {
static WebDriver driver;
public void setupBrowser(String browser, String url) {
String currDir = System.getProperty("user.dir");
if (browser.equalsIgnoreCase("chrome")) {
System.setProperty("webdriver.chrome.driver", currDir + "\\drivers\\chromedriver.exe");
driver = new ChromeDriver();
}
else if (browser.equalsIgnoreCase("firefox")) {
System.setProperty("webdriver.gecko.driver", currDir + "\\drivers\\geckodriver.exe");
driver = new FirefoxDriver();
}
else if (browser.equalsIgnoreCase("edge")) {
System.setProperty("webdriver.edge.driver", currDir + "\\drivers\\msedgedriver.exe");
driver = new EdgeDriver();
}
else {
System.out.println("Valid browser not found therefore quitiing");
System.exit(0);
}
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
if (url != "")
driver.get(url);
else
driver.get("about:blank");
}
public void closeBrowser() {
driver.close();
}
Класс страницы
public class pagetest extends Base{
Actions action;
public void closebtn() {
driver.findElement(By.cssSelector("button._2doB4z")).click();
}
public void mibutton() {
WebElement mobiles = driver.findElement(By.xpath("//div[text()='Mobiles']"));
action = new Actions(driver);
action.moveToElement(mobiles).click().perform();
WebElement electronicsmenu = driver.findElement(By.xpath("//span[text()='Electronics']"));
action.moveToElement(electronicsmenu).click().perform();
List <WebElement> value = driver.findElements(By.xpath("//div[@class='_1kidPb']/div[@class='_1QrT3s']//a");
for(WebElement elem:value) {
if (elem.getText().equals("Mi")) {
elem.click();
}
}
WebElement label = driver.findElement(By.xpath("//p[text()='Latest from MI : ']"));
System.out.println("The Label 'Latest from MI' is present : " +label.isEnabled());
}
public static void main(String[] args) {
pagetest obj = new pagetest();
obj.setupBrowser("chrome", "https://www.flipkart.com/");
obj.closebtn();
obj.mibutton();
}
}
Детали ошибки
Исключение в потоке "main" org.openqa.selenium.StaleElementReferenceException: ссылка на устаревший элемент: элемент не прикреплен к документу страницы (Информация о сеансе: chrome = 89.0.4389.90) Для документации по этой ошибке посетите: https://www.seleniumhq.org/exceptions/stale_element_reference.html
Прежде всего, избегайте поиска элементов по тексту. На странице может быть много элементов с одинаковым текстом, но не каждый видимый и / или интерактивный или даже прикрепленный к странице документа. Используйте явное ожидание, если исключение StaleElementReferenceException сохраняется.




Пожалуйста, сделайте отступ в коде как в блоке кода. Это слишком сложно читать. Нам также понадобится репрезентативный образец HTML-кода, с которым вы имеете дело, а также сообщение об ошибке и трассировку стека. Нам также необходимо знать, какой язык программирования вы используете. Пожалуйста, добавьте тег к вашему вопросу, относящийся к вашему языку программирования.