文章目录
通过id定位百度输入框,并输入搜索词:阿里云
chrome_driver = webdriver.Chrome('../selenium_webdriver/chromedriver')
chrome_driver.get('https://www.baidu.com')
chrome_driver.maximize_window()
# 第一种
# chrome_driver.find_element_by_id('kw').send_keys("anonymous' blog")
# chrome_driver.find_element_by_id('su').click()
# 第二种
chrome_driver.find_element('id', 'kw').send_keys('阿里云')
chrome_driver.find_element('id', 'su').click()
time.sleep(5)
chrome_driver.quit()
通过name定位新闻
并输入点击
chrome_driver = webdriver.Chrome('../selenium_webdriver/chromedriver')
chrome_driver.get('https://www.baidu.com')
chrome_driver.maximize_window()
# 第一种
# time.sleep(3)
# chrome_driver.find_element_by_name('tj_trnews').click()
# 第二种
time.sleep(3)
chrome_driver.find_element('name', 'tj_trnews').click()
time.sleep(2)
chrome_driver.quit()
通过class name定位百度输入框,并输入搜索词:anonymous' blog
chrome_driver = webdriver.Chrome('../selenium_webdriver/chromedriver')
chrome_driver.get('https://www.baidu.com')
chrome_driver.maximize_window()
chrome_driver.find_element_by_class_name('s_ipt').send_keys("anonymous' blog")
chrome_driver.find_element_by_id('su').click()
time.sleep(5)
chrome_driver.quit()
通过tag name来定位元素
HTML通过tag来定位不同页面的元素,不过因为一个标签往往被用来定义一类功能,所以通过tag name标签来识别单个元素的概率很低。
因为百度输入框的tag name是input
且百度首页的input
标签有很多,所以我们将一组input
标签放到一个list中,然后在由索引来定位唯一需要的那个input元素,然后定位到百度输入框,并输入搜索词阿里云
,点击百度一下按钮
。
chrome_driver = webdriver.Chrome('../selenium_webdriver/chromedriver')
chrome_driver.get('https://www.baidu.com')
chrome_driver.maximize_window()
chrome_driver.implicitly_wait(10)
input_list = chrome_driver.find_elements_by_tag_name('input')
print('input_list:', input_list)
print('len(input_list):', len(input_list))
print('input_list[7].tag_name:', input_list[7].tag_name)
input_list[7].send_keys('阿里云')
input_list[8].click()
print('input_list[8].location:', input_list[8].location)
time.sleep(5)
chrome_driver.quit()
通过link_text来定位元素
link定位用法与前面几种有所不同,它专门用来定位文本链接。
定位百度首页页头的新闻
chrome_driver = webdriver.Chrome('../selenium_webdriver/chromedriver')
chrome_driver.get('https://www.baidu.com')
chrome_driver.maximize_window()
time.sleep(3)
chrome_driver.find_element_by_link_text('新闻').click()
time.sleep(3)
chrome_driver.quit()
通过partial_link_text定位元素
partial link定位是对link定位的一种补充,有些文字链接比较长,这个时候我们可以取文字链接的部分文字进行定位,只要这部分文字可以唯一的标示这个链接即可。
比如定位百度首页页尾的京公网安备11000002000001
,这时候只选取部分文本即可。
chrome_driver = webdriver.Chrome('../selenium_webdriver/chromedriver')
chrome_driver.get('https://www.baidu.com')
chrome_driver.maximize_window()
time.sleep(3)
chrome_driver.find_element_by_partial_link_text('安备1100').click()
time.sleep(3)
chrome_driver.quit()
XPath表达式定位元素
可以在chrome浏览器中按F12, 选中需要用Xpath定位的元素, 右键选择copy, 选择copy full XPath(绝对路径)或copy XPath(相对路径),不过一般不用这个工具。
①绝对路径定位(不推荐), 通过F12查看页面源代码,参考开发者工具所展示的源代码层级关系,可以通过下面的方式定位到百度输入框
和百度一下
搜索按钮
driver.find_element_by_xpath('/html/body/div[2]/div[2]/div[5]/div[1]/div/form/span[1]/input').send_keys('哇哈哈')
driver.find_element_by_xpath('/html/body/div[2]/div[2]/div[5]/div[1]/div/form/span[2]/input').click()
②通过绝对路径定位到百度输入框和百度一下
搜索按钮
chrome_driver .find_element_by_xpath('//*[@id="kw"]').send_keys('蒙牛')
chrome_driver .find_element_by_xpath('//*[@id="su"]').click()
元素定位辅助工具ChroPath
安装方法
Chrome网上应用商店搜索ChroPath
,然后安装即可。