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缺少属性:
解决方法:在操作类中引用该包,引用后实例化并且传所需参数,之后业务层、用例层调用该方法: