Нажмите несколько вкладок на веб-странице, используя Selenium Java - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь нажать на веб-элемент, нажав Tab, чтобы найти этот элемент, мне нужно нажать Tab 15 раз. У меня есть этот код, чтобы нажать Tab и Enter:

driver.switchTo().activeElement().sendKeys(Keys.TAB);
driver.switchTo().activeElement().sendKeys(Keys.ENTER);

Я искал в интернете и нашел следующий код с использованием Python:

from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains

N = 5  # number of times you want to press TAB

actions = ActionChains(browser) 
for _ in range(N):
actions = actions.send_keys(Keys.TAB)
actions.perform()

Или, так как это Python, вы даже можете сделать:

actions = ActionChains(browser) 
actions.send_keys(Keys.TAB * N)
actions.perform()

Можете ли вы помочь мне с этим с помощью Java? Спасибо!

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Вы можете сделать так:

Actions actions = new Actions(driver);
for (int i = 0; i < 15; i++) {
    actions.sendKeys(Keys.TAB).build().perform();
}
actions.sendKeys(Keys.ENTER).build().perform();

Вы также можете найти ближайший фокусируемый элемент (например, входы, кнопки ..) и перейти к целевому элементу с меньшим количеством вкладок:

Actions actions = new Actions(driver);

((JavascriptExecutor)driver).executeScript("arguments[0].focus()", driver.findElement(closestElementLocator));
for (int i = 0; i < 2; i++) {
   actions.sendKeys(Keys.TAB).build().perform();
}
actions.sendKeys(Keys.ENTER).build().perform();

//You can also get the element
//WebElement targetElement = driver.switchTo().activeElement();
//targetElement.sendKeys(Keys.ENTER);
0 голосов
/ 27 августа 2018

Вы можете использовать несколько методов для этого действия. Здесь я использую цикл while:

import org.openqa.selenium.Keys;
import org.openqa.selenium.interactions.Actions;
int x = 1;
// Exit when x becomes greater than 15
while (x<=15){
  driver.findElement("your locator here").sendKeys(Keys.TAB);
  // Increment the value of x for
  // next iteration
  x++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...