selenium处理12306出发地value值修改不成功

不知道你们在使用ui框架编写12306时,有没有遇到过这样的问题.
在使用selenium去编写场景时发现出发地这个input标签,每次都没办法按照你的预期去修改值
在这里插入图片描述
例如:在这里插入图片描述
首先在浏览器里使用document发现完全可以修改掉输入框的值.然后兴致勃勃的 使用webdriver来加载js语法

    from_stat_js = """
    var a= document.getElementById("fromStationText")
        a.value='蚌埠南'
    
    """
self.driver.execute_script(self.from_stat_js)

然后运行!
在这里插入图片描述
没错!!报错了.js加载失败 ,!!让你摸不着头脑,然后我不信!
在这里插入图片描述
然后,我就把出发,到达,和点击查询,全部使用js来加载…
就没有然后了…我们来看第二个
列如2:
既然js使用不了,那肯定很多人跟我的想法一样,第一时间又想到了selenium里面的键盘库,KEYS

        wait(self.driver, self.query)
        self.driver.find_element(*self.form_stat).send_keys(from_name, Keys.ENTER)

这个地方逻辑就是,先定位元素,然后send_keys是输入值,然后利用键盘回车,模拟出真是场景来跳到下一个输入框!
没错!这个方法我在第一次尝试的使用成功了!但是,本着自动化最少成功5次的原则,我从新执行了一遍.发现,没错!!!什么都没动!!也没报错!!但是,出发地变的不对了!!
在这里插入图片描述
在这里插入图片描述
然后我开始疯狂打断点,一点一点运行.发现.断点调试没有任何问题.每次都是我输入的出发地和到达地.

那么问题到底出在哪里了呢?究竟发生了什么灵异事件,导致了输入文本不一致呢???
在我无法找到问题的时候,我使用了强制等待

time.sleep(12)

没错,你没看错,我强制等待了12秒!每一步,以保证每次运行,我都能看的清楚!
然后…我发现了问题所在
在这里插入图片描述
没错!!每次都被输入框里的文本给影响了…输入的值没有了.只剩下了回车键!!!所以默认选了第一个北京北!

既然找到了原因!那么接下来.就先把输入框文本清除掉,然后输入值,然后在下一步

    def input_winds(self, stat_name, end_name):
    """  这里建议拆分开来写,不然会出现某些动作同时执行,导致报错"""
    # 隐形等待,等待元素出现,这里是我自己封装的方法
        wait(self.driver, self.query)
        # 这里加的强制等待,可加可不加,为了好定位我才加的
        time.sleep(2)
        # 这里获取到的是Webdriver对象
        a = self.driver.find_element(*self.from_stat)
        # 清除输入框
        a.clear()
        # 等待1s
        time.sleep(1)
        # 再次填写出发地
        a.send_keys(stat_name)
        # 在等待
        time.sleep(1)
        # 回车键
        a.send_keys(Keys.ENTER)
        time.sleep(2)

在这里插入图片描述
程序写入正确了!

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值