java selenium chrome 默认路径 selenium指定浏览器路径_搜索


selenium是一个自动化测试的工具,可以模拟人的操作,而且配合python来使用非常方便。

官网:SeleniumHQ Browser Automation


安装配置

要开始使用selenium,需要安装一些依赖


conda install selenium


java selenium chrome 默认路径 selenium指定浏览器路径_css_02


要使用selenium去调用浏览器,还需要一个驱动,不同浏览器的webdriver需要独立安装

https://www.selenium.dev/documentation/en/webdriver/driver_requirements/Driver requirementshttps://www.selenium.dev/documentation/en/webdriver/driver_requirements/

我这里就下载Firefox的驱动,下载之后,是一个EXE文件


java selenium chrome 默认路径 selenium指定浏览器路径_python_03


把这个文件找地方放一下,然后,加入到PATH中

这两步做完之后,就可以测试下了


from selenium import webdriver

driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")


java selenium chrome 默认路径 selenium指定浏览器路径_python_04


遇到的第一个问题,是这个driver,说找不到,但是我已经配置到PATH中了

这里也可以手工指定路径


from selenium import webdriver


driver = webdriver.Firefox(executable_path=r'C:Program FilesMozilla Firefoxgeckodriver.exe')
driver.get("https://www.baidu.com/")


如果环境没有问题的话,就会弹出一个火狐浏览器,打开百度网址


java selenium chrome 默认路径 selenium指定浏览器路径_搜索_05


定位元素

我们打开一个网页之后,我们就可以定位我们指定的页面元素,比如文本款,按钮等

我们继续以百度为例,我们填入关键词“python”,并提交搜索

为了填入关键词,我们首先如要知道怎么找到这个搜索框

在浏览器中,使用开发者工具,查看代码


java selenium chrome 默认路径 selenium指定浏览器路径_搜索_06


这里应该是这个input,它属于一个form表单


java selenium chrome 默认路径 selenium指定浏览器路径_css_07


大概可以使用这几种方式来确定一个元素

这里先使用id来找到这个元素


from selenium import webdriver

driver = webdriver.Firefox(executable_path=r'C:Program FilesMozilla Firefoxgeckodriver.exe')
driver.get("https://www.baidu.com/")
p_input = driver.find_element_by_id('kw')
print(p_input)
print(p_input.location)
print(p_input.size)
print(p_input.send_keys('python'))
print(p_input.text)


java selenium chrome 默认路径 selenium指定浏览器路径_selenium指定浏览器路径_08


location,是元素的位置;

size是元素的大小

send_keys是给元素传入值,这里,我们再传入python之后,会自动展开搜索


java selenium chrome 默认路径 selenium指定浏览器路径_python_09


最后一行p_input.text,本来是想输入元素的内容,但是这里是None,或许,我们应该用另一种方式来获取


print(p_input.get_property('name'))
print(p_input.get_property('value'))


java selenium chrome 默认路径 selenium指定浏览器路径_搜索_10


使用get_property函数,可以根据属性名称获取值

好了,我们接着看


java selenium chrome 默认路径 selenium指定浏览器路径_selenium指定浏览器路径_11


我们在传入搜索值之后,页面切换了,但是,并没有进行搜索,我们还差一步搜索

为了出发搜索,我们可以使用


java selenium chrome 默认路径 selenium指定浏览器路径_python_12


用另一个input,也就是按钮的点击事件来实现;或者是form表单的提交事件


p_btn = driver.find_element_by_id('su')
p_btn.click()


重新执行后,就会进行搜索了


java selenium chrome 默认路径 selenium指定浏览器路径_css_13


后面,我们还可以针对结果页面,进行处理

比如把所有的结果都记录下来


ads = driver.find_elements_by_css_selector("div.c-container")
print('count:', len(ads))

for a in ads:
    try:
        x = a.find_element_by_css_selector('h3:nth-child(1) > a:nth-child(1)')
        print('title:', x.text)
        print('url:', x.get_property('href'))
        print('------------')
    except NoSuchElementException as e:
        print(e)


java selenium chrome 默认路径 selenium指定浏览器路径_selenium指定浏览器路径_14