Python+Selenium 定位页面

发布时间:2019-07-11 09:47:18编辑:auto阅读(1561)

    1.跳转到Frame/Iframe ,再定位元素
    理解:frame的实质,frame中实际上是嵌入了另一个页面,而webdriver每次只能在一个页面识别,因此需要先定位到相应的frame,对那个页面里的元素进行定位

    1.1方法一
    如果iframe有name或id的话,直接使用switch_to_frame("name值")或switch_to_frame("id值")。如下:
    driver=webdriver.Firefox()
    driver.get(r'http://www.126.com/')
    driver.switch_to_frame('x-URS-iframe') #需先跳转到iframe框架
    username=driver.find_element_by_name('email')
    username.clear()

    1.1方法二
    如果iframe没有name或id的话,则可以通过下面的方式定位:
    #先定位到iframe
    elementi= driver.find_element_by_class_name('APP-editor-iframe')
    #再将定位对象传给switch_to_frame()方法
    driver.switch_to_frame(elementi)

    PS:完成操作后,可以通过switch_to.parent_content()方法跳出当前iframe,或者还可以通过switch_to.default_content()方法跳回最外层的页面

    2.Xpath 层级定位
    2.1 通过绝对路径定位
    例如:find_element_by_xpath("/html/body/div/div/div[2]/div[3]/a[2]").click()

    绝对路径是从当前元素往前数最近的一个html 开始数的。
    2.2 利用元素属性定位
    地图有三个属性,href,name,class。

    driver.findElement(By.xpath("//a[@name='tj_trnews']")).click();

        driver.findElement(By.xpath("//a[@href='http://news.baidu.com']")).click()

    driver.findElement(By.xpath("//a[@class='mnav']")).click();

        driver.findElement(By.xpath("//a[contains(@href,\"http://map.baidu.co\")]")).click();

    参考资料:
    https://www.cnblogs.com/csj2018/p/9194618.html 
    https://www.cnblogs.com/yufeihlf/p/5689042.html
    http://www.cnblogs.com/yufeihlf/p/5717291.html 

关键字