python学习 selenium 还有几个做的小题目 day4.....

selenium学习
find_elements_by_class_name 方法返回的是找到的符合条件的 所有 元素 (这里有3个元素), 放在一个 列表 中返回。
而如果我们使用 find_element_by_class_name (注意少了一个s) 方法, 就只会返回 第一个 元素。
element = wd.find_element_by_id('kw')
浏览器,找到id为kw的元素后,将结果通过 浏览器驱动 返回给 自动化程序, 所以 find_element_by_id 方法会 返回一个 WebElement 类型的对象。
通过 WebElement 对象的 text属性 可以获取该元素 在网页中的文本内容
所以 下面的代码,可以打印出 element 对应 网页元素的 文本
print(element.text)
如果找不到元素, 每隔 半秒钟 再去界面上查看一次, 直到找到该元素, 或者 过了10秒 最大时长
wd.implicitly_wait(10)

 根据 tag name 选择元素,返回的是 一个列表
 里面 都是 tag 名为 div 的元素对应的 WebElement对象
elements = wd.find_elements_by_tag_name('div')

.get_attribute获取元素值,就是不展示在网页上的 srcid="1599"
element = wd.find_element_by_id('input_name')
print(element.get_attribute('srcid'))
element.clear() # 清除输入框已有的字符串
element.send_keys('test') # 输入新字符串

###获取输入框里面的文字
对于input输入框的元素,要获取里面的输入文本,用text属性是不行的,这时可以使用 element.get_attribute('value')
ex:
element = wd.find_element_by_id("input1")
print(element.get_attribute('value')) # 获取输入框中的文本


#####CSS选择器########
elements = wd.find_elements_by_css_selector('div')
等价于
elements = wd.find_elements_by_tag_name('div')

根据class属性 选择元素的语法是在 class 值 前面加上一个点: .class值

根据id属性 选择元素的语法是在id号前面加上一个井号: #id值

,或 比如想要同时选择classid .class,#id  
也可以.plant , .animal

根据 href  img选择用[] 比如[href=https:/xxxxx/] 不需要后面的也可以[href]
前面可以加上标签名的限制,比如div[class='href']表示 选择所有 标签名为div的属性为href的元素

mainWindow变量保存当前窗口的句柄
mainWindow = wd.current_window_handle


wd.switch_to.window(mainWindow) //通过前面保存的老窗口的句柄,自己切换到老窗口
wd.maximize_window() //【第一个窗口】
            
windows = wd.window_handles //获取打开的多个窗口句柄

wd.switch_to.window(windows[-1])//切换到当前最新打开的窗口
wd.close()  // 关闭一个窗口

按次序选择子节点
使用 nth-child

span:nth-child(2)
如果你不加节点类型限制,直接这样写 :nth-child(2)
就是选择所有位置为第2个的所有元素,不管是什么类型
 
未完
题目1
编写程序实现:从键盘输入整数n。从文件"in.txt"中读入n行,将其中以字母A开头的行打印到标准输出(这里指的是屏幕)中。‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

【输入形式】‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

    从键盘输入整数n;‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

    文件输入的第1至n行的每一行构成一个字符串。‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

【输出形式】 ‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

    标准输出的每一行是字母A开头的行。若未找到符合条件的字符串,则输出"not found";若输入数据不合法(指n为小数或负数)则输出"illegal input"。‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

【样例输入】‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

      键盘输入:      5 ‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

      文件输入:‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

            hello world‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

            An apple‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

            hello C++‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

            A man‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

            a program‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

【样例输出】 ‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

            An apple‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

            A man‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
答题1
try:
    num = int(input('输入整数:'))
    if num>0:
        with open('./in.txt','r+') as f:
            a = 0
            for i in f.readlines()[:num]:
                i = i.strip()
                if i[0] =='A':
                    print(i)
                    a+=1
            f.close()
            if a == 0:
                print('not fond')
    else:
        print('illegal inpu')

except ValueError:
    print('illegal inpu')
题目2

题目2

答题2
def isPrime(n):
    if n <= 1:
        return False
    i = 2
    while i * i <= n:
        if n % i == 0:
            return False
        i += 1
    return True

for i in range(2,31):
   # print(i)
    if isPrime(i):
        print(i,end=',')


selenium遇到的一些坑

不执行for里面的内容 也没有提示, 查看网页元素没问题,以为是frame没有切换的问题
后面才发现是因为 selenium 点击了一个窗口,跳转,打开一个新界面窗口脚本还是在原来的窗口上查找那个元素, 需要切换到跳转的那个窗口
for handle in wd.window_handles:
    // 先切换到该窗口
    wd.switch_to.window(handle)
    # 得到该窗口的标题栏字符串,判断是不是我们要操作的那个窗口
    if 'Bing' in wd.title:
       // 如果是,那么这时候WebDriver对象就是对应的该该窗口,正好,跳出循环,
        break
群里爬取 ziyuan.baidu.com的时候网页一直在加载 然后使用wd.implicitly_wait(10) 和time.sleep 都无效
解决:
 wd.set_page_load_timeout(3)
 强制仅等待三秒
======================================================================================

在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值