美文网首页
关于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