Атрибут для выбора при настройке Css Селектор в селене - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь войти на сайт и пытаюсь нажать на кнопку входа. HTML Узел для этой кнопки:

<button data-purpose="header-login" type="button" class="btn btn-quaternary">Log In</button>

Мой код:

WebDriver driver = new FirefoxDriver();

driver.get("https://www.udemy.com");

WebDriverWait wait = new WebDriverWait(driver,30);    
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("button[type='button']"))).click();
O/P- `Exception in thread "main" org.openqa.selenium.TimeoutException: Expected condition failed: waiting for visibility of element located by By.cssSelector: button[type='button'] (tried for 30 second(s) with 500 milliseconds interval)

Однако, когда в коде я заменяю cssSelector("button[type='button']") на cssSelector("button[class='btn btn-quaternary']"), он работает полностью отлично.

это тип неправильный выбор атрибута?

1 Ответ

0 голосов
/ 27 апреля 2020

Ваш код правильный, но селектор CSS, который вы используете, указывает на несколько элементов, как показано ниже:

By.cssSelector("button[type='button']"))

enter image description here

2) Однако, когда вы используете ниже cssSelector ("button [class = 'btn btn-quaternary']") это указывает на указанную c кнопку входа, на которую вы нацеливаетесь.

enter image description here

Существует еще один альтернативный способ использования XPath (не рекомендуется, поскольку положение можно изменить):

(//button[@type='button'])[4] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...