美文网首页我爱编程
定位display=none的元素

定位display=none的元素

作者: 我不喜欢吃苹果 | 来源:发表于2018-01-26 15:03 被阅读0次

    将百度搜索设置为每页显示20条,python代码如下:

    #coding=utf-8

    from selenium import webdriver

    from selenium.webdriver.common.action_chains import ActionChains

    import os,time

    wb=webdriver.Firefox()

    wb.get("http://www.baidu.com")

    #定位设置

    wb.find_element_by_xpath("/html/body/div[1]/div[1]/div/div[3]/a[8]")

    #定位搜索设置

    wb.find_element_by_link_text("搜索设置").click()

    time.sleep(3)

    #设置每页显示20条

    tmp=wb.find_element_by_name("NR")

    tmp.find_element_by_xpath("//option[@value='20']").click()

    #点击保存设置按钮

    wb.find_element_by_class_name("prefpanelgo").click()

    wb.implicitly_wait(5)

    #在弹出的窗口中点击确定

    wb.switch_to_alert().accept()

    #在搜索hello world查看结果

    wb.find_element_by_id("kw").send_keys("hello world")

    wb.find_element_by_id("su").click()

    time.sleep(3)

    wb.quit()

    如果我们直接执行,会出现错误:

    百度首页html

    可以看到display:none,导致元素定位不到。

    解决方法:

    1.模仿鼠标行为

    link=wb.find_element_by_xpath("/html/body/div[1]/div[1]/div/div[3]/a[8]")

    ActionChains(wb).move_to_element(link).perform()

    2.执行JavaScript脚本(暂时行不通)

    js="document.getElementsByClassName('bdpfmenu').display='block';"

    wb.execute_script(js)

    不过,我试了很多display=none的情况:

    (1)利用firebug等工具可以查看到页面有显示,只是代码默认为灰色

    百度首页代码

    (2)利用firebug等工具看不到页面中有显示,需点击加载过后才会有代码显显示

    点击前网页代码
    点击后网页代码

    执行JavaScript脚本不可行,暂时还找不到原因

    相关文章

      网友评论

        本文标题:定位display=none的元素

        本文链接:https://www.haomeiwen.com/subject/fyijvxtx.html