对于selenium,以前都是一直学习在用,碰到问题就搜索都没做什么整与总结, 现花点时间整理下,方便以后自己看。
定位https://www.python.org首页的搜索框如下图:
代码如下:
# 定位界中的三大金刚:id,css, xpath # 根据Id定位 input_id = browser.find_element_by_id('id-search-field') # 根据css定位 input_css = browser.find_element_by_css_selector('#id-search-field') # 根据xpath定位 input_xpath = browser.find_element_by_xpath('//input[@id="id-search-field"]') print(input_id,input_css,input_xpath) browser.close() 如果三大金刚不能满足你的需求, 还可以使用以下的定位方式 # 根据元素的name属性定位 browser.find_element_by_name('q') # 根据链接文本定位超链接,两个方法自己试哈 browser.find_element_by_link_text('Donate') browser.find_element_by_partial_link_text('Donate') # 根据标签名定位, 例如定位上述首页中的大Logo browser.find_element_by_tag_name('h1') # 根据元素的class属性定位 browser.find_element_by_class_name('site-headline') # ps: class含有空格的复合类怎么办 # 以上方式的缺点是如果对应的元素不是唯一的,会返回第一个匹配的元素,可能不是你想要的结果 # 如果没有元素匹配,会抛出NoSuchElementException异常 # 元素不是唯一的怎么才能获取所有的, 就是在element后面加多个s,返回结果是List input_q = browser.find_elements_by_name('q') # 知道需要的元素在第几个就可以通过操作List的方法提取, 或者用for循环,例如 q = input_q[0] 终极方式find_element,实际上以上的定位方式都是通过它来实现的 from selenium import webdriver from selenium.webdriver.common.by import By browser = webdriver.Chrome() browser.get('https://www.python.org') # 第一个参数是定位方式,第二个传入具体的参数 input_q= browser.find_element(By.NAME,'q') print(input_q) browser.quit()当然find_element() 方法,不止By.NAME,更多的自己尝试吧