#selenium #automation
Вопрос:
Привет, я сделал скрипт для входа в систему github.com и выпадающий список, затем мне нужно выбрать опцию выхода из выпадающего списка. Я попробовал использовать имя класса и xpath, оба не работали.
Код для выпадающего меню «Выбрать».
driver.findElement(By.xpath("/html/body/div[1]/header/div[7]/details/summary/span[2]")).click();
Код для выбора опции выхода в раскрывающемся меню
driver.findElement(By.xpath("/html/body/div[1]/header/div[7]/details/summary/span[2]")).click();
До выпадающего меню он работал, позже выбор в выпадающем меню не работал.
Ответ №1:
driver.findElement(По.xpath(«/html/тело/div[1]/заголовок/div[7]/подробности/сводка/промежуток[2]»)). нажмите();
Элемент, на который вы ссылаетесь, не принадлежит Sign outкнопке. Пожалуйста, используйте любой из элементов.
driver.findElement(By.xPath("//button[@class='dropdown-item dropdown-signout']")).click();
или
driver.findElement(By.cssSelector("button[class*='dropdown-item dropdown-signout'")).click();
Имя класса Sign outbutton является составным именем класса, поэтому вы не можете использовать его напрямую By.className
. Составные имена классов не разрешены в selenium, если вы используете, то вы испытаете CompoundClassException
Ответ №2:
вместо использования имен классов вы можете использовать определенный текст, например «Выйти». тогда ваш код для нажатия кнопки «Выйти» может быть таким :
driver.findElement(By.xPath("//button[contains(text(),'Sign out')]")).click();