Selenium w / Python3 - AttributeError: у объекта 'str' нет атрибута 'tag_name' - PullRequest
0 голосов
/ 09 мая 2018

Новичок в автоматизации с Selenium / Python. Я блокируюсь, автоматизируя форму регистрации. Раскрывающийся элемент является обязательным, но я получаю следующую ошибку ...

AttributeError: объект 'str' не имеет атрибута 'tag_name'

Я разместил свой код ниже и не могу найти в Интернете ответа на вопрос, почему это так. Любая / все помощь очень ценится.

from selenium import webdriver
from selenium.webdriver.support.select import Select
teamElement = browser.find_element_by_id('id_team')
time.sleep(2)
sel = Select('teamElement')
sel.select_by_value("12")

Ошибка исходит из строки sel = Select ('teamElement').

 Traceback (most recent call last):
 File "/Users/jamesstott/PycharmProjects/basics/RunChromeTests.py", 
 line 40, in <module>
 sel = Select('teamElement')
 File "/Users/jamesstott/PycharmProjects/venv/lib/python3.6/site-packages/selenium/webdriver/support/select.py", line 36, in __init__
 if webelement.tag_name.lower() != "select":
 AttributeError: 'str' object has no attribute 'tag_name'

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Согласно API Docs, Select() принимает webelement в качестве аргумента и определяется следующим образом:

class selenium.webdriver.support.select.Select(webelement)

A check is made that the given element is, indeed, a SELECT tag. If it is not, then an UnexpectedTagNameException is thrown.

Args :  
webelement - element SELECT element to wrap

Но согласно вашемуВ коде вы передали аргумент teamElement (который изначально был WebElement ) в одинарных кавычках, т.е. как string.Следовательно, вы видите ошибку.

Решение

Передайте аргумент teamElement как WebElement как:

sel = Select(teamElement)
0 голосов
/ 09 мая 2018

Выбор принимает аргумент типа WebElement, а не строковый тип. изменить следующую строку

sel = Select('teamElement')

до

sel = Select(teamElement)

Полный код,

from selenium import webdriver
from selenium.webdriver.support.select import Select
teamElement = browser.find_element_by_id('id_team')
time.sleep(2)
sel = Select(teamElement)
sel.select_by_value("12")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...