Как нажать на результат поисковой системы, если он соответствует искомому значению - PullRequest
0 голосов
/ 27 апреля 2020

Я новичок в селене. Я принимаю пользовательский ввод и, основываясь на этом, ищу его в duckduck go. Я хочу, чтобы, если входное значение соответствовало веб-ссылке на результат поиска, код должен щелкнуть соответствующий веб-сайт. Мой код выполняется успешно, но он не нажимает на ссылку. Это мой код: -

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import NoSuchElementException, StaleElementReferenceException

stuff = input()
options = webdriver.ChromeOptions()
options.headless = True
options.add_argument("==lang=es")
browser = webdriver.Chrome()
browser.implicitly_wait(30)
browser.maximize_window()

browser.get('http://www.duckduckgo.com')
elem = browser.find_element_by_name('q')
elem.clear()

elem.send_keys(stuff)
elem.submit()

list = stuff.lower().replace(' ', '').split(',')
for a in browser.find_elements_by_id('links'):
    b = a.find_elements_by_tag_name('a')
    for link in b:
        url = link.get_attribute('href')
        if any(dom in url for dom in list):
            link.click()
        break

Для например; Я ввожу это входное значение - Mitchell Centre, Darwin CBD, 0800, и мой код запускается и открывает duckduck go и вводит это значение в строку поиска, он должен щелкнуть на веб-сайте, который соответствует моему входному значению (в синем кружке), но код останавливается после этого.

enter image description here

Я не понимаю, в чем проблема, было бы здорово, если бы вы, ребята, могли мне помочь.

1 Ответ

3 голосов
/ 27 апреля 2020

На самом деле я из Java фона, но все же, если бы вы могли преобразовать мои две строки java кода в python, вы бы смогли достичь этого

Ваш код:

для ссылки в b: url = link.get_attribute ('href'), если есть (dom in url для dom в списке): link.click () break

Вместо link.get_attribute, конвертируйте приведенный выше код как ниже

В Java у нас есть метод .getText () для получения текста.

Поэтому попробуйте получить текст, который вы ищете, используя python, как показано ниже (я использовал * 1027) *)

link.getText() store this in a variable

For ex as in Java : String str = link.getText()

И вот вам, если Условие

использует ваш метод содержимого, как в python, следующий - в Java

if (str .contains («Центр Митчелла, КБР Дарвина, 0800»))

link.click()
break

Этот код отлично работает для меня.

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