1. 程式人生 > >selenium項目中遇到的問題總結

selenium項目中遇到的問題總結

彈出 textarea ont rip att win ann not 屬性

問題:在pycharm中運行用例能成功,在命令行運行提示找不到com包
解決辦法:添加一個PYTHONPATH的環境變量,值為工程目錄的路徑

當要查找的文本前後有換行時,用如下方法解決
//td[contains(text(),‘保證金管理費‘)]

xpath方式定位同級元素的前面幾個元素
els = self.driver.find_elements_by_xpath("//td[contains(text(),‘保證金管理費‘)]/preceding-sibling::td[3]")
xpath方式定位同級元素的後面幾個元素
el = self.driver.find_element_by_xpath("//td[text()=‘審核意見:‘]/following-sibling::td[1]/textarea")


使用xpath方法定位不包含某個屬性的標簽
如下定位的是input標簽包含value屬性但不包含disabled屬性
//input[@value=‘YH‘][not(@disabled)]

# 拉動滾動條到最後
js = "var q=document.documentElement.scrollTop=100000"
driver.execute_script(js)
有些彈出框使用上面的方法無法滾動則使用下面的方法:
target = driver.find_element_by_xpath("//th[text()=‘開始時間‘]")
driver.execute_script("arguments[0].scrollIntoView();", target)

執行jQuery去掉readonly屬性

js = "$(‘input[name=" + el_name[1] + "]‘).removeAttr(‘readonly‘)"

self.driver.execute_script(js)

打開多個頁面時切換操作
#獲取當前窗口句柄
handle1 = driver.current_window_handle
#點擊頁面某個鏈接彈出第二個窗口
driver.find_element_by_xpath("//a[text()=‘" + MyTestCase.loanNo + "‘]").click()
#獲取所有窗口的句柄
handles = driver.window_handles
handle2 = ""
#切換窗口
for handle in handles:
if handle != handle1:
driver.switch_to.window(handle)
handle2 = driver.current_window_handle
time.sleep(2)
#點擊第二個窗口中的鏈接彈出第三個窗口
driver.find_element_by_xpath("//a[text()=‘編輯內審信息‘]").click()
# 切換到內審信息編輯窗口
#再次獲取所有窗口句柄
handles = driver.window_handles
#切換到第三個窗口
for handle in handles:
if handle != handle1 and handle != handle2:
driver.switch_to.window(handle)
#註意: 操作完後要使用driver.close()關閉當前窗口
#並且要driver.switch_to.window(handle2)才能在第二個窗口上繼續操作

註意: driver的創建需要寫在setUpclass或者setUp方法裏面,否則使用HTMLReport運行所有用例時會同時打開很多個窗口

selenium項目中遇到的問題總結