Как идентифицировать webelement с помощью динамического идентификатора и имени? - PullRequest
0 голосов
/ 31 октября 2019

Я не могу определить webelement, так как он имеет динамический идентификатор и имя. Есть iframe в другом iframe. Атрибуты id и name для второго iframe являются динамическими. Мне нужно определить второй iframe, чтобы включить его http://prntscr.com/pqshpr Пожалуйста, помогите мне с определением этого динамического элемента.

 WebElement chartFrameFirst = driver.findElement(By.xpath("(.//iframe)[1]"));
    driver.switchTo().frame(chartFrameFirst);
    click(By.xpath(".//div[@id=\"tv_chart_container\"]"));
    WebElement chartFrameSecond = driver.findElement(By.xpath(".//iframe[@id=\"tradingview_1d329\"]"));
    driver.switchTo().frame(chartFrameSecond);

Ответы [ 3 ]

0 голосов
/ 31 октября 2019

Мы можем индексировать пользователя для переключения кадра, который находится внутри iframe

driver.switchTo().frame(0).switchTo().frame(0);
0 голосов
/ 01 ноября 2019

Вы можете найти количество кадров и затем переключиться на

int noofframes=driver.findelements(By.tagName(“iframe”)).size();
driver.switchTo().frame(1);

Переключиться на кадр, используя идентификатор кадра:

new WebDriverWait(driver,20).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt((By.tagName(“iframe”)));

driver.switchTo().frame(1);

Надеюсь, что эта помощь

0 голосов
/ 31 октября 2019

Мы можем использовать contains(), который используется в выражении XPath, как показано ниже

WebElement chartFrameSecond = driver.findElement(By.xpath(".//iframe[contains(@id,\"tradingview_\")]"));
...