Selenium, как щелкнуть / получить доступ к тегу с помощью ссылки, которая имеет функцию javascript - PullRequest
0 голосов
/ 22 января 2019

Я искал, но не нашел ничего похожего на то, что я пытаюсь сделать. Я использую Java, кстати, я пытаюсь нажать / получить доступ к тегу с селеном. Проблема в том, что я не уверен, как это сделать. Кажется, есть функция / событие, которое мне нужно запустить, но я не совсем уверен, как это сделать. Я попробовал несколько способов получить текст и нажать, но я знал, что это не сработает. Также я видел, что есть способы использования JavascriptExecutor, но не уверен, как использовать его для моего случая. Я опубликую тег ниже и также подпись функции, которая может помочь. Если есть похожий вопрос, пожалуйста, оставьте ссылку.

<a name="DERIVED_SSS_SCL_SSS_ENRL_CART$276$" id="DERIVED_SSS_SCL_SSS_ENRL_CART$276$" ptlinktgt="pt_peoplecode" tabindex="203" onclick="javascript:cancelBubble(event);" href="javascript:submitAction_win0(document.win0,'DERIVED_SSS_SCL_SSS_ENRL_CART$276$');" class="SSSHYPERLINKBOLDSMALL">Enrollment Shopping Cart</a>

подпись

function submitAction_win0(form, id, event)

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Вам не нужен JS. Просто используйте этот xpath:

"//a[contains(@onclick,'javascript:cancelBubble(event);')]"

Убедитесь, что элемент кликабелен, см.

import org.openqa.selenium.support.ui.ExpectedConditions;

для нескольких совпадений:

    List<WebElement> elements = driver.findElements(By.xpath("//a[contains(@onclick,'javascript:cancelBubble(event);')]"));
    int elementIndex = 0; // 0 to get first of the 33 mathes, 32 to get the last one
    WebElement element = elements.get(elementIndex);
    element.click();
0 голосов
/ 22 января 2019

EDIT:

Вы должны использовать WebDriverWait , чтобы избежать исключения NoSuchElementException, чтобы драйвер ожидал нажатия на элемент ... он будет ждать до 10 секунд, и вы можете сказать ему, что нужно ждать больше, если это необходимо ...

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.partialLinkText("Student Center")));
element.click();

Использование click():

WebElement element = driver.findElement(By.cssSelector("a[class='SSSHYPERLINKBOLDSMALL']"));
element.click();

Использование JavascriptExecutor (не рекомендуется):

WebElement element = driver.findElement(By.cssSelector("a[class='SSSHYPERLINKBOLDSMALL']"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);

Вы также можете использовать другие локаторы ... как linkText:

WebElement element = driver.findElement(By.linkText("Enrollment Shopping Cart"));

или partialLinkText:

WebElement element = driver.findElement(By.partialLinkText("Shopping Cart"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...