使用Selenium单击“下一步”按钮,直到所有页面都被解析为止:Python3

时间:2018-11-15 15:37:26

标签: python python-3.x selenium-webdriver web-scraping

我试图单击网页的“下一步”按钮,但收到错误消息。 我到达桌面时采取的步骤:

  1. 转到ibl.mdanderson.org/fasmic /#!
  2. 输入并选择AKT1(3个突变)(注意:“开始”按钮无效,请从下拉菜单中单击选项)
  3. 单击带有文本“ MS”的绿色按钮,将出现一个新表格。
  4. 在这个新表格中,将有一个名为文学的标签。
  5. 文献标签的末尾,将有一个“下一步”按钮转到下一页。

我需要解析“资料”标签中的数据(效果很好)。但是,我无法转到下一页来分析同一张表中的数据。

以下是代码:

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,它不在当前框架上下文中,或者   文档已刷新”

2 个答案:

答案 0 :(得分:0)

在“文献”标签的末尾尝试

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()

答案 1 :(得分:0)

您尝试过

function check_access_metadata()
{
    $dirCheck = pathinfo($_SERVER['REQUEST_URI']);
    $requestFile = $dirCheck['basename'];
        if( strpos ( $dirCheck['dirname'] , 'uploads' ) > 0  ){
            if ( is_user_logged_in() ) {
                //Do something with registered user
            } else {
                //Do something with guest
            }
        }
}
add_action( 'template_redirect', 'check_access_metadata' );

您可以改善,但这对点击有效(假设我定位到了正确的下一步)

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