from selenium import webdriver
from selenium.webdriver.remote.webelement import WebElement
h='''
<div class="page"><small>下一页</small></div>
'''
driver =webdriver.Chrome()
driver.get(h)
#操作 1:读取 h 中的 small 标签,并显示其文本内容,期望的输出是:'下一页'
s=driver.find_element_by_xpath("//div[@class='page']//small") #语句 1
print("s=",s.get_attribute('text'))
#操作 2:定位 h 中文本内容为'下一页'的元素,期望定位到的元素应当是 small 标签。然后显示其文本内容,期望的输出是:'下一页'
pg=driver.find_element_by_xpath("//div[@page]//small[contains(text(),'下一页')]") #语句 2
print("pg=",pg.get_attribute('text'))
上面的代码是用 selenium 来解析文本 h, 进行了两个操作,操作的目的如代码中的注释所示,但是两个操作都报错了,提示找不到元素。我的问题如下:
1、目前的代码是用 xpath 来解析,请问怎么写才是正确的?
2、我尝试不用 xpath,修改如下:
语句 1 修改为用 css 选择器 s=driver.find_element_by_css_selector('div.page>small')
语句 2 修改为 driver.find_element_by_link_text('下一页')
做了上述修改后还是一样找不到元素。恳请大家指点如果不用 xpath,例如用 css 选择器应该怎么写语句呢?
恳请指点,感谢!
1
OpenJerry 2017-09-28 21:54:15 +08:00
driver.get(h) 这句话看不懂。driver.get() 这个方法传的参数不应该是一个 URL 吗?
|
2
saximi OP @OpenJerry 是我搞错了,我的本意不是要测试某个网址,我只是希望对某一段 HTML 语法的解析进行分析,所以才用文档字符串来保存待分析的内容,我并不想传入整个 URL 作为参数,这样该怎么办呢
|
3
kqz901002 2017-09-29 00:17:33 +08:00
@saximi python -m SimpleHTTPServer ... driver.get("http://127.0.0.1/test.html")
|
4
cszeus 2017-09-29 01:00:51 +08:00
只想分析 html,用 beautifulsoup 吧
|
5
mlyy 2017-09-29 04:15:20 +08:00 via iPhone
lxml 好像也可以
|
6
justtery 2017-09-29 08:33:34 +08:00 via Android
pyquery 在呼唤你
|
7
Marsss 2017-09-29 08:42:32 +08:00
把 target_url 写出来,正确答案马上就有了
|
9
saximi OP @kqz901002 请问这是什么包里的模块? 我用 SimpleHTTPServer 关键字在 pypi 上没找到这个包呢,谢谢了
|
11
yucongo 2017-09-30 00:16:14 +08:00
pyquery +1
|