我们在使用selenium的find_element_by_xpath()之类的方法时,首先要注意它和浏览器xpath不一样。
1.在selenium-webdriver中,要想对页面操作,首先要做的是选中页面元素,即定位元素。find_element_by_xpath()、find_element_by_id()这类的方法都是页面元素选取方法(也叫做页面元素定位方法)。
清楚概念之后,对于获取下面图片中的text文本内容,
author = driver.find_element_by_xpath('//*[@id="root"]/div/div[2]/div/div[2]/div[1]/div[2]/h1/span/span/span/span/span')
这个方法是错的,它只是通过xpath表达式定位到了span节点。
author = driver.find_element_by_xpath('//*[@id="root"]/div/div[2]/div/div[2]/div[1]/div[2]/h1/span/span/span/span/span/text()')
该方法在xpath表达式最后增加了/text(),貌似是对的,实际上则是错的,这也是很多人会犯的错误。
//*[@id="root"]/div/div[2]/div/div[2]/div[1]/div[2]/h1/span/span/span/span/span/text()
这个xpath表达式放在浏览器中是对的,因为浏览器中的xpath可以通过在xpath表达式最后加上/text()获取当前节点的文本。
在selenium中获取文本的正确写法是
author = driver.find_element_by_xpath('//*[@id="root"]/div/div[2]/div/div[2]/div[1]/div[2]/h1/span/span/span/span/span').text
即先通过find_element_by_xpath()定位元素,再通过.text获取文本。