美文网首页
关于python+selenium定位元素的问题

关于python+selenium定位元素的问题

作者: doge5595 | 来源:发表于2017-11-12 16:08 被阅读0次

    有时候,使用python+selenium进行登陆后,页面发生跳转,而python仍然停留在原来的页面,无法定位到要找的元素。切换句柄也只是针对各个窗口之间的切换,无法获取到跳转后的页面。

    那就换个方法,不去定位要找的元素,直接在当前窗口的基础上使用JS代码再打开一个新窗口,新窗口的网址,就是在登陆后跳转页面显示元素所指向的url,当有多个窗口时,可以使用句柄的方式切换页面。这里所用的思想就是,登陆过后,你进行各个页面访问都是合法的,具体代码如下:

    #_*_ coding:utf-8 _*_

    import time from selenium import webdriver from selenium.webdriver.common.keys

    import Keys

    #定义好登陆使用的用户名与密码

    username = 'xxxxx'

    password='xxxxxx'

    #定义操作火狐浏览器geckodriver.exe的驱动的路径,使用前一定要将火狐浏览器的安装路径与geckodriver.exe驱动的路径加入环境变量当中

    executable_path = "D:\python\Tools\geckodriver.exe"

    #打开浏览器

    browser = webdriver.Firefox()

    #打开要登陆的页面

    browser.get('xxx')

    #让页面停顿3秒,防止页面未加载完定位不到元素

    time.sleep(3)

    #定位到页面输入用户名的地方

    username_input = browser.find_element_by_id('textUsername')

    #输入用户名

    username_input.send_keys(username)

    #定位到页面输入密码的地方

    password_input = browser.find_element_by_id('textPassword')

    #输入密码

    password_input.send_keys(password)

    #回车登陆

    password_input.send_keys(Keys.RETURN)

    #js打开新窗口的代码,其中的网址就是你想访问的页面url

    js='window.open("xxx");'

    #执行js代码打开新窗口

    browser.execute_script(js)

    #列举当前所有窗口的句柄,句柄应该就相当于标识各个窗口的id

    handles = browser.window_handles

    #让页面停顿3秒,防止页面未加载完定位不到元素

    time.sleep(3)

    #可以先将所有的句柄以及当前页面的句柄打印出来,切换到你想要的句柄

    browser.switch_to_window(handles[1])

    相关文章

      网友评论

          本文标题:关于python+selenium定位元素的问题

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