首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Selenium单击“Next”按钮,直到分析完所有页面: Python3

使用Selenium单击“Next”按钮,直到分析完所有页面: Python3
EN

Stack Overflow用户
提问于 2018-11-15 15:37:25
回答 2查看 297关注 0票数 0

我试图点击一个网页的“下一步”按钮,但我收到了一个错误。我走到桌子前的步骤:

  1. 转到ibl.mdanderson.org/farmic.#!
  2. 键入并选择AKT1 (3个突变)(注意:“GO”按钮不工作,请单击下拉菜单中的选项)。
  3. 点击绿色按钮与文字'MS',将出现一个新的表格。
  4. 在这个新的表格中,将有一个标签名为“文献”。
  5. 在“文献”选项卡的末尾,将有一个“下一步”按钮转到下一页。

我需要解析“文献”选项卡中的数据(它工作得很好)。但是,我不能转到下一页来解析同一表中的数据。

以下是守则:

代码语言:javascript
复制
driver.find_element_by_xpath("//*[contains(text(),'Literature')]").click()
        for elements in driver.find_elements_by_css_selector("#literature_div [ng-repeat]"):
            print(elements.text,"\n")
            driver.implicitly_wait(5)
driver.find_element_by_xpath('//a[@ng-click="selectPage(page + 1, $event)"]').click()

执行此操作后,将得到以下错误:

消息:元素引用是陈旧的;元素不再附加到DOM,它不在当前框架上下文中,或者文档已被刷新

EN

回答 2

Stack Overflow用户

发布于 2018-11-15 16:03:32

在“文献”选项卡的末尾,请尝试

代码语言:javascript
复制
driver.find_element_by_xpath('/html/body/div/div[2]/div[2]/div[1]/div/div/div[3]/div/div/div[5]/div/ul/li[7]/a').click()
票数 0
EN

Stack Overflow用户

发布于 2018-11-15 17:08:31

你试过吗

代码语言:javascript
复制
driver.find_element_by_css_selector('[ng-click="selectPage(page + 1, $event)"]').click()

您可以改进,但这适用于单击(假设我的目标是右下一个)

代码语言:javascript
复制
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

url = "https://ibl.mdanderson.org/fasmic/#!/"
d = webdriver.Chrome()
wait = WebDriverWait(d, 10)
d.get(url)
d.find_element_by_css_selector('[type=text]').send_keys('AKT1 (3 mutations)')
d.find_element_by_css_selector("input[type='text']").send_keys(Keys.RETURN)
btn = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".btn.btn-default.btn-tab-avail")))
btn.click()
d.find_element_by_css_selector("[heading=Literature]").click()

ele = wait.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR, "#literature_div [ng-repeat]"), "PMID"))
eles = d.find_elements_by_css_selector("#literature_div [ng-repeat]")

d.find_element_by_css_selector('[ng-click="selectPage(page + 1, $event)"]').click()

#d.quit()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53322893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档