Selenium + Python ожидает конкретный уже найденный элемент

Я хотел бы использовать expect для уже обнаруженного объекта, но получаю сообщение об ошибке. Я могу определить местонахождение родителя только до того, как он будет нажат - после этого он преобразуется в элементы ввода «один из многих-похожих», и единственный способ отличить его - это свойство «значение» (а не атрибут, таким образом, нельзя получить доступ из XPath) .

Мой код (что-то вроде):

parent_element = self.driver.find_element_by_xpath("//div/div/input[position()=10]/div")
parent_element.click()  # After this I cannot locate parent_element any more
child_element = WebDriverWait(self.driver,3).until(
    expect.element_to_be_clickable(
        parent_element.find_element_by_xpath("./div")
    )
)
child_element.click()

Что приводит к:

TypeError: find_element() argument after * must be an iterable, not function
parent_element.find_element_by_xpath("./div") это правильный код ('./div')? может быть ('//div')
Druta Ruslan 23.05.2018 10:45

"./div", поскольку я хочу найти подэлемент контекстного узла "parent_element"

Maciej Wakuła 23.05.2018 10:52
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
170
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте эту строку:

child_element = WebDriverWait(parent_element, 3).until(
    expect.element_to_be_clickable((By.XPATH, "./div")))

Обратите внимание, что element_to_be_clickable() должен получить кортеж из "by" и "value" в качестве единственного аргумента, но не WebElement

P.S. Я предполагаю, что expect - это ExpectedConditions

Да, ожидается это ExpectedConditions. Спасибо!

Maciej Wakuła 23.05.2018 11:19

Другие вопросы по теме