我正在尝试构建一个网络抓取工具来访问此网站:https://chem.nlm.nih.gov/chemidplus/
但是,我无法让selenium实际按下提交按钮,我不知道为什么。
这是元素:
<button type="submit" title="Submit the search" id="yui_3_5_0_1_1503421296451_272">Search</button>
这是我的代码:
display = Display(visible=1,size=(800,600))
display.start()
browser = webdriver.Chrome('/home/harry/Downloads/chromedriver')
browser.get('https://chem.nlm.nih.gov/chemidplus/')
search = browser.find_element_by_id('QV1')
search.send_keys(drug)
button = browser.find_element_by_id('yui_3_5_0_1_1503346832009_267')
然而,它返回错误: selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{&#34;方法&#34;:&#34; id&#34;,&#34;选择器&#34;:&#34 ; yui_3_5_0_1_1503346832009_267&#34;} (会话信息:chrome = 60.0.3112.101) (驱动程序信息:chromedriver = 2.30.477691(6ee44a7247c639c0703f291d320bdf05c1531b57),platform = Linux 4.10.0-32-generic x86_64)
我使用了类名,xPath和ID,它们都返回了相同的错误。
编辑:显然每次刷新页面时ID都会更改,这就是我的代码中的ID与我从页面复制的ID不同的原因。
答案 0 :(得分:1)
在html中,您提到了ID为&#34; yui_3_5_0_1_1503421296451_272
&#34;但是在代码中你提到它是&#34; yui_3_5_0_1_1503346832009_267
&#34;。为什么这样?
下面的代码将为您解决 -
button = browser.find_element_by_id('yui_3_5_0_1_1503421296451_272')
请阅读有关动态ID的评论。
为什么不使用xpath
进行拍摄button = browser.find_element_by_xpath("//*[@id="qbuild"]/div[1]/div/span/button[1]")