Селен возвращающий список вместо пути объекта или имени [дубликат]

Отличные ответы до сих пор, но некоторые лакомые кусочки отсутствуют. Единственное главное подчеркивание - это не совсем только соглашение: если вы используете from foobar import *, а модуль foobar не определяет список __all__, имена, импортированные из модуля, не включают те с лидирующим подчеркиванием. Предположим, что это в основном конвенция, поскольку этот случай является довольно неясным углом; -).

Соглашение с ведущим-подчеркиванием широко используется не только для private , но также и то, что C ++ вызывал protected - например, имена методов, которые полностью предназначены для переопределения подклассами (даже те, которые должны быть переопределены, поскольку в базовом классе они raise NotImplementedError! -) часто являются именами одного и того же нижнего подчеркивания, указывающие на код с использованием экземпляров этого класса (или подклассов), в котором упомянутые методы не предназначены для прямого вызова.

Например, для создайте поточно-безопасную очередь с другой дисциплиной очередей, чем FIFO, один импортирует Queue, subclasses Queue.Queue и переопределяет такие методы, как _get и _put; «клиентский код» никогда не вызывает эти методы («крючок»), а скорее («организующие») общедоступные методы, такие как put и get (это известно как шаблон дизайна Template Method ] - см., например, здесь для интересной презентации, основанной на видеоролике моего разговора по этому вопросу, с добавлением кратковременных расшифровки стенограммы).

7
задан vkrams 27 June 2012 в 10:19
поделиться

5 ответов

возможно driver.find_elements_by_link_text("MISCQA Misc Tests")[0].click() или другой индекс ...

Я не знаю Selenium, но я думаю, что find_elements_by_link_text находит больше чем одно, или, возможно, метод всегда возвращает список, а не один объект. Если вы абсолютно уверены, что результатом поиска будет только один объект, чем использовать [0], как я уже упоминал, если вы не можете предположить, что будет только один объект, вам нужно придумать более сильный стратегия

9
ответ дан alecxe 21 August 2018 в 17:19
поделиться
  • 1
  • 2
    Викрам, я не знаю этого Селена, но сообщение об ошибке, которое вы получили, четко заявляет, что у вас есть СПИСОК назад, поэтому вам нужно получить доступ к элементам внутри этого списка ... Какая другая ошибка возникает при попытке сделать это? – Dan Niero 27 June 2012 в 10:32

Оператор driver.find_elements_by_link_text("MISCQA Misc Tests") возвращает список WebElement, некоторые из которых не могут быть доступны для клика.

Таким образом, вам нужно будет просмотреть список возвращаемых WebElement и затем щелкнуть по тем элементам, которые можно щелкнуть.

Вы можете проверить, является ли WebElement доступным или нет, с помощью функции isClickable().

Я не размещал код, потому что я не знаю Python. Надеюсь, это вам поможет.

0
ответ дан Hari Reddy 21 August 2018 в 17:19
поделиться

, если атрибут «MISCQA Misc Tests» имеет только один, вы можете попытаться изменить элементы на элемент в этом коде «driver.find_elements_by_link_text (« MISCQA Misc Tests »)« Надеемся, что проблема будет исправлена ​​

0
ответ дан sherry 21 August 2018 в 17:19
поделиться

, если вам нужен один элемент, поэтому вы можете использовать:

driver.find_element_by_link_text("MISCQA Misc Tests")

или если вы хотите весь список, то:

for x in self.driver.find_elements_by_link_text("MISCQA Misc Tests"):
    link = webdriver.ActionChains(self.driver).move_to_element(x).click(x).perform()
1
ответ дан Ulf Gjerdingen 21 August 2018 в 17:19
поделиться
1
ответ дан user 21 August 2018 в 17:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: