Как щелкнуть веб-элемент, используя JavaScript, используя RobotFramework SeleniumLibrary в Python? - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь нажать на WebElement, используя JavaScript, но я не могу создать оператор JavaScript для этого.

Я могу нажать кнопку Отмена , используя это утверждение

driver.execute_javascript("$(\"div[title='Cancel']\")[0].click()")

Но при нажатии на другой более сложный элемент я пытаюсь это сделать

expand_xpath = "//span[text()='Submit']//ancestor::table//a[text()='Expand']"
driver.execute_javascript("document.getElementByXpath('${expand_xpath}').click()")

JavascriptException: Сообщение: javascript ошибка: document.getElementByXpath не является функцией

Этот expand_xpath хранит xpath веб-элемента который мне нужно щелкнуть, но я не могу создать код JS для щелчка по этому элементу.

Найдите RobotFramework Выполните Javascript расширение ключевого слова по этой ссылке https://robotframework.org/SeleniumLibrary/SeleniumLibrary.html#Execute% 20 Javascript

Вторая попытка:

expand_xpath = "//span[text()='Submit']//ancestor::table//a[text()='Expand']"
driver.execute_javascript("document.evaluate('${expand_xpath}', document.body, null, 9, null).singleNodeValue.click()")

Выход:

JavascriptException: Message: javascript error: missing ) after argument list

Ответы [ 3 ]

1 голос
/ 04 мая 2020

Попробуйте щелкнуть элемент, используя следующую строку: javaScript:

 element= driver.find_element_by_xpath("//span[text()='Submit']//ancestor::table//a[text()='Expand']")
 driver.execute_script("arguments[0].click();", element)

ИЛИ используйте ниже:

expand_xpath = "//span[text()='Submit']//ancestor::table//a[text()='Expand']"
driver.execute_javascript("document.getElementByXPath('${expand_xpath}').click()")

Примечание: "P" в верхнем регистре в XPath .

0 голосов
/ 05 мая 2020

Я использую этот метод для борьбы с кликом.

Аргументы: ele_xpath: XPATH элемента, по которому нужно щелкнуть.

from SeleniumLibrary import SeleniumLibrary  

def click_element_with_javascript(ele_xpath):
            try:
                js_exp = "document.evaluate(\"##xpath##\", document.body, null, 9, null).singleNodeValue.click()".replace('##xpath##', ele_xpath)
                driver.execute_javascript(js_exp)
            except Exception as e:
                print("Element click through javascript resulted in Exception: {}".format(e))
0 голосов
/ 05 мая 2020

Поскольку вы используете RobotFramework, это довольно просто:

${locator}    //button[@id='abc']
Execute JavaScript    document.evaluate("${locator}", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.click()

Обратите внимание, что введенный xpath не должен содержать символ двойной кавычки ("), только одну кавычку (') для предотвращения JS ошибка разбора

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