Как идентифицировать элемент с текстом как Войти через Google через xpath в java selenium - PullRequest
0 голосов
/ 18 мая 2018

Я выполняю автоматизацию для приложения Redbus, но я нахожу веб-элементы с помощью Firebug, и он выделит браузер Firefox, но он не работает в браузере Chrome.

Пожалуйста, просмотрите следующие снимки экрана: Ссылка на сайт Redbus

  • шаг 1 Откройте URL-адрес приложения redbus = https://www.redbus.in/
  • шаг 2 Нажмите Модуль учетных записей
  • шаг 3Нажмите на ссылку или ссылку для регистрации

Мой XPath:

.//*[@id='g-signin2']//span[text()='Sign in with Google']

Снимок экрана браузера Chrome: Невозможно определить webElement

Ответы [ 4 ]

0 голосов
/ 18 мая 2018

Ссылка для регистрации в Google находится в Iframe, чтобы взаимодействовать с элементами, которые находятся внутри фрейма / фрейма, вам нужно изменить фокус вашего веб-драйвера на этот конкретный фрейм.

Как вы можете это сделатьчто в вашем случае:

driver.switchTo.frame("//iframe[@class='modalIframe']")  

Тогда вы можете взаимодействовать с Войти через Google .

WebElement signupButton = new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[contains(@id,'signed') and text()='Sign in with Google']")))  
signupButton.click();  

HTH!

0 голосов
/ 18 мая 2018

Здесь у вас есть модальный фрейм. Сначала вы должны включить его и выполнить действия над элементами:

driver.switchTo().frame("modalIframe");

или, может быть, так:

driver.switchTo().activeElement()
0 голосов
/ 18 мая 2018

К идентифицирует и вызывает click() для элемента с текстом как Войдите в систему с помощью Google , так как элемент находится внутри.Таким образом, вы должны заставить WebDriverWait для обоих случаев, один раз для кадра, который будет доступен , и еще раз для желаемого элемента, который будет кликабельным , и вы можете использоватьследующее решение:

new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//iframe[@class='modalIframe' and @src='/account?pageName=Home&noReload=noReload']")));
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[@class='abcRioButtonContents']//span[normalize-space()='Sign in with Google']"))).click();
0 голосов
/ 18 мая 2018

Похоже, что всплывающее окно входа в систему доступно внутри тега iframe.Сначала перейдите к этому конкретному кадру, как показано ниже, а затем добавьте знак в шаге xpath.

driver.switchTo().frame(0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...