document.findElementByXPath завершается ошибкой - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь найти элемент, используя:

self.s2l.execute_javascript(
    'document.getElement(By.XPath"{}")[0].scrollBy(0,{})'.format(
        element,
        new_position
    )

Получена ошибка:

JavascriptException: Сообщение: javascript ошибка: отсутствует) после списка аргументов

Когда я использую:

self.s2l.execute_javascript(
     'document.getElementsByClassName("{}")[0].scrollBy(0,{})'.format(
        element,
        new_position
    )

Работает и проходит тестирование.

Не могли бы вы помочь, что случилось с Xpath?

1 Ответ

1 голос
/ 21 марта 2020

Вам нужны круглые скобки вокруг аргумента By.XXX(). Кроме того, существует . между By и типом локатора.

И у вас несбалансированные скобки - вы пропускаете ), который соответствует ( после self.s21.execute_javascript. (Я не уверен, почему ваш второй пример не имеет такой же проблемы).

self.s2l.execute_javascript(
    'document.findElement(By.xpath("{}"))[0].scrollBy(0,{})'.format(
        element,
        new_position
    )
)

Кроме того, xpath в нижнем регистре JavaScript Selenium.

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

self.s21.execute_javascript(
    'document.findElement(By.xpath("//div[starts-with(@class,\'ReactVirtualize\')]"))[0].scrollBy(0,8000)'.format(
        element,
        new_position
    )
)
...