python写法:

    def SwitchHandle(self):
        '''
        切换窗口
        '''
        windows = self.driver.window_handles
        self.driver.switch_to.window(windows[-1])

 

滑动页面:

    def ScrollPage(self,num):
        '''
        滚动屏幕
        '''
        self.driver.execute_script('document.documentElement.scrollTop={0}'.format(num))

 

 

selenium 弹窗处理

1. alert 这种类型的处理方式多用

driver.switch_to.alert方法
晚上的大把都是说的这种方法.

2. 自定义 JS 弹窗

大多数的网页多采用的这种方式,如百度:

 

 

这种方式其实也能够通过,selenium 的查找方式找到的,不过要给我们的程序一定的“缓冲时间”

# 点击登陆按钮

driver.find_element_by_id("login").click()

# 弹窗出现后,显示的等待几秒钟

sleep(2)  

# 获取弹窗中的元素,并点击

driver.find_element_by_class_name("confirm").click()

3. 设置display属性为none

详见 : https://blog.csdn.net/real_tino/article/details/59068827

 

 

第一:没有全屏模式,出现了其他按钮的遮挡

解决方案是:

driver.maximize_window()

第二:滑屏出现了问题

我参考的这一篇文章:selenium_通过selenium控制浏览器滚动条

里面的方法我都实验了一遍   不知道为什么 效果不理想

最後花錢找人解決了問題

driver.execute_script('document.documentElement.scrollTop={0}'.format(9000))

一條金貴的代碼

 

最後附上代碼  實現翻頁  

import time

from seleniumimport webdriver

chrome_options = webdriver.ChromeOptions()

chrome_options.add_argument('--headless')

chrome_options.add_argument('--disable-gpu')

chrome_options.add_argument("'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'")

driver = webdriver.Chrome(chrome_options=chrome_options)

driver.get("http://www.mafengwo.cn/poi/5430915.html")

driver.maximize_window()

driver.find_element_by_xpath('//a[@title="蜂蜂点评"]').click()

driver.get_screenshot_as_file(r'C:\Users\weidu\PycharmProjects\day21\pachong\test\dianping.png')

# driver.execute_script("window.scrollBy(0,100000)")

driver.get_screenshot_as_file(r'C:\Users\weidu\PycharmProjects\day21\pachong\test\fanye.png')

driver.implicitly_wait(10)

# driver.switch_to.frame(0)

for _in range(5):

driver.execute_script('document.documentElement.scrollTop={0}'.format(9000))

time.sleep(1)

driver.find_element_by_xpath("//*[text()='后一页']").click()

 

返回按钮状态,布尔型:

    def GetAddBtn(self):
        '''
        获取优先出借的我要加入按钮的状态
        '''
        addbtn=self.bcfunc.FindElement("Xpath", "//input[@name='submitBtn']")
        return addbtn.is_enabled()
        addbtn = self.prority.GetAddBtn()
        self.assertEqual(addbtn,False,"按钮是可点击状态")

 

解决引用该类时报错问题:

import sys
import os
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)

 

变量值取开始到倒数第二位,取到后转为float型,保留2位小数,打印数据类型:

    remprice=self.prority.GetRemainPrice() 
    print(remprice[:-1])
    remprice=float(remprice[:-1])
    remprice = Decimal(remprice).quantize(Decimal('0.00'))
    print(remprice)
    print(type(remprice))

 

IndexError: list index out of range 的原因有两种:

第一种情况: index越界 

第二种情况:列表为空

单独写一个test.py文件执行没问题,但是在TestCase中写就会报上一层的WangCaiOperations缺少属性:

 

 解决方法:在操作类中引用该包,引用后实例化并且传所需参数,之后业务层、用例层调用该方法: