无法使用Selenium访问跨度中包含的网页按钮

时间:2017-08-22 17:36:06

标签: python selenium

我正在尝试构建一个网络抓取工具来访问此网站: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不同的原因。

1 个答案:

答案 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]")