4-selenium-xpath定位
from selenium import webdriver """ xpath 定位: xpath路径:绝对路径 / 例子:/html/body/form/input 相对路径 // 例子: //input 所有input元素 尽量使用相对路径简短 通配符: //form/* 所有form路径下的所有元素 列表选择索引从1开始: //td[1]/a[last()] 选择属性: "//input[@name='kw']" ; "//input[@name='kw' and @class='kw']" 常用函数:contains() //a[contains(@href,'新闻')] text() //a[text()='新闻'] ; //a[contains(text(),'新闻')] xpath轴:这些方法都不能定位时,这时候就得考虑依据元素的父辈、兄弟或者子辈节点来定位了。轴名称::标签名 //input[@class='kw']/parent::div 当前节点父节点是div --->找的是上一级的元素 //a[contains(text(),'新闻')]/child::div 当前a元素的子元素div ---->找的是下一级元素 //input[@class='kw']/ancestor::div 当前input元素的所有先辈们(父亲、爷爷) --->找的是上级或者上上级的元素 //input[@class='kw']/descendant::a 当前input元素中有的子代、子子代a元素 --->找的是下一级、或者下下一级的元素 """ from selenium import webdriver driver = webdriver.Chrome() driver.get('http://wwww.baidu.com') '''<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">通过浏览器copy 元素''' # driver.find_element_by_xpath("//*[@name='wd']").send_keys('Hello') # *通配符代表任何一个元素 通过属性:id、name、class获取元素 # driver.find_element_by_xpath("//input[@id='kw']").send_keys('hello') ''' <div id="u1"> <a href="https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_pc_1" target="_blank" id="virus-2020" class="mnav sp dot">抗击肺炎</a> <a href="http://news.baidu.com" name="tj_trnews" class="mnav">新闻</a><a href="https://www.hao123.com" name="tj_trhao123" class="mnav">hao123</a> <a href="http://map.baidu.com" name="tj_trmap" class="mnav">地图</a><a href="http://v.baidu.com" name="tj_trvideo" class="mnav">视频</a> <a href="http://tieba.baidu.com" name="tj_trtieba" class="mnav">贴吧</a><a href="http://xueshu.baidu.com" name="tj_trxueshu" class="mnav">学术</a> <a href="https://passport.baidu.com/v2/?login&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F&sms=5" name="tj_login" class="lb" onclick="return false;">登录</a> <a href="http://www.baidu.com/gaoji/preferences.html" name="tj_settingicon" class="pf">设置</a><a href="http://www.baidu.com/more/" name="tj_briicon" class="bri" style="display: block;">更多产品</a> </div> ''' # driver.find_element_by_xpath("//*[@id='u1']/a[1]").click() # 索引获取元素。链接可以通过click()方法点击 # driver.find_element_by_xpath("//div[@id='u1']/a[last()]").click() # last()函数代表最后一个 # driver.find_element_by_xpath("//a[contains(text(),'新闻')]/parent::div") # 定位到这个没有操作