如果搜索结果匹配搜索结果,如何单击它

时间:2020-04-27 12:13:56

标签: python selenium selenium-webdriver automation

我刚接触硒。我正在接受用户输入,并以此为基础,在uckduckgo中进行搜索。我想要,如果输入值与搜索结果Web链接匹配,则代码应在该匹配的网站上单击。我的代码成功执行,但没有单击Web链接。这是我的代码:-

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,我的代码运行并打开duckduckgo并在搜索栏中输入此值,它应单击与我的输入值匹配的网站(在蓝色气泡中),但是代码在这个。

enter image description here

我不明白问题是什么,如果你们能帮助我,那会很好。

1 个答案:

答案 0 :(得分:3)

实际上我来自Java背景,但是即使您可以将我的两行Java代码转换为python,也可以实现

您的代码:

对于b中的链接: url = link.get_attribute('href') 如果有的话(URL中的dom为列表中的dom): link.click() 打破

而不是link.get_attribute,如下转换上面的代码

在Java中,我们有.getText()方法来获取文本。

因此,尝试使用python来获取您想要的文本,如下所示(我使用Java)

link.getText() store this in a variable

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

然后是条件是否出现

使用python中的contains方法,下面的方法在Java中

if(str.contains(“ Mitchell Centre,Darwin CBD,0800”))

link.click()
break

此代码对我来说很好用。