Выпадающий селектор в selenium Automation

#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();