Использование Selenium с Python для заполнения формы поиска - PullRequest
0 голосов
/ 22 мая 2018

Я новичок в Selenium и полу новичок в Python.Я пытаюсь заставить Селенум заполнить длинную форму.Первая часть этой формы состоит из поиска в строке поиска, к которой автоматически появляется список.Если пользователь видит то, что он ищет, он щелкает элемент в списке, и этот элемент отображается под панелью поиска (см. Рис. Ниже):

enter image description here

enter image description here

enter image description here

Я пробовал следующий код (или некоторую форму следующего кода):

driver.implicitly_wait(30)
competitor = 'Bank of America Corp. (SNL P&C Group)'

comp_element = 
driver.find_element_by_css_selector('<inputonkeydown="javascript:return 
disableEnterKey(event);" onkeypress="javascript:return 
disableEnterKey(event);" class="SNLTypeAheadSearchInput" type="text" 
id="searchInputOnetypeAhead" name="q" size="65" placeholder="Enter a company 
name, SNL group name, or NAIC #." onfocus=" var svc_url=&quot;&quot;; 
svc_url=&quot; 
/SNLWebPlatform/Content/UniversalSearch/UniversalSearchResponder. 
aspx? 
hasResults= 
False&amp;sets=-1&amp;maxResults=15&amp;additionalQuery=1,-1|-1,4,6&quot;; 
InitSearchField(svc_url, 0, true, false, 
SNLEntitySelectionTypeAhead_typeAhead.OnShowResultsFunction, 
SNLEntitySelectionTypeAhead_typeAhead.OnNoResultsFunction, 
SNLEntitySelectionTypeAhead_typeAhead.OnEnter, true, 
SNLEntitySelectionTypeAhead_typeAhead.OnHighlight, 
SNLEntitySelectionTypeAhead_typeAhead.OnNoHighlight, 
SNLEntitySelectionTypeAhead_typeAhead.OnGetActiveResultsEvent, 0, 
&quot;searchInputOnetypeAhead&quot;, 400, 
0);SNLEntitySelectionTypeAhead_typeAhead. 
AfterSearchInit(this,&quot;searchInputOnetypeAhead&quot;)"  
autocomplete="off" style="color: rgb(148, 148, 148);">')

comp_element.send_keys(competitor)

comp_element.click()

Я получаю следующую ошибку:

InvalidSelectorException: Message: invalid selector: An invalid or illegal selector was specified (Session info: chrome=66.0.3359.139) (Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Windows NT 6.1.7601 SP1 x86_64)

Я не уверен, почему селектор не работает.По правде говоря, я не уверен, должен ли я выбирать этот тип элемента css_selector.

Есть идеи?

1 Ответ

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

Это не похоже на селектор CSS, это похоже на весь источник входных данных - но, к счастью, это означает, что мы можем видеть другие варианты для поиска.Вы пробовали выбирать по имени класса или идентификатору?Selenium предлагает несколько способов найти этот ввод для отправки указанных ключей.

http://selenium -python.readthedocs.io / locating-elements.html

селектор cssбольше похоже на это:

comp_element = driver.find_element_by_css_selector('.SNLTypeAheadSearchInput')

или

comp_element = driver.find_element_by_css_selector('#searchInputOnetypeAhead')

, или вы можете просто найти элемент по имени класса:

comp_element = driver.find_element_by_class_name('SNLTypeAheadSearchInput')

или по идентификатору:

comp_element = driver.find_element_by_id('searchInputOnetypeAhead')

Надеюсь, это поможет!

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