python常见问题集锦

WebDriverWait


等待界面触发条件后执行下一步:

参考:https://www.cnblogs.com/yuuwee/p/6635652.html

注意内部条件的括号必须是双层,如:((By.ID,'kw'))

WebDriverWait(driver,10).until(EC.title_is(u"百度一下,你就知道"))
'''判断title,返回布尔值'''

WebDriverWait(driver,10).until(EC.title_contains(u"百度一下"))
'''判断title,返回布尔值'''

WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,'kw')))
'''判断某个元素是否被加到了dom树里,并不代表该元素一定可见,如果定位到就返回WebElement'''

WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.ID,'su')))
'''判断某个元素是否被添加到了dom里并且可见,可见代表元素可显示且宽和高都大于0'''

WebDriverWait(driver,10).until(EC.visibility_of(driver.find_element(by=By.ID,value='kw')))
'''判断元素是否可见,如果可见就返回这个元素'''

 

send_keys失效


 在爬虫过程中,对input赋值时,send_keys偶发失效的问题,需要先clear后send_keys

 driver.find_element_by_id("searchKeyWord").clear()
 driver.find_element_by_id("searchKeyWord").send_keys("123")

 

python中出现引用报错


一般使用import:

import traceback

引用包内的类 from 包 import 类:

from PIL import Image

多级目录引用:

在每个目录下建 __init__.py 文件,内容为空即可。如下目录:

A文件夹--------B文件夹------a.py

      |-------------C文件夹------b.py

      |-------------c.py

      |-------------d.py

a.py引用b.py:
import sys
sys.path.append("..")
import C.b

a.py引用c.py:
import sys
sys.path.append("..")
import c

c.py引用a.py:
from B import a

c.py引用d.py:
import d #直接引用
from . import d     #.表示当前目录

 

python模块调用提示文件不存在


参考:https://blog.csdn.net/cxx654/article/details/79371565

方法一:

需要使用 os.path.dirname(__file__)解决:

import os
print("当前路径 -> %s" %os.getcwd())
current_path = os.path.dirname(__file__)
def read_file() :
    with open(current_path + "/user_info.txt" , encoding = 'utf-8') as f_obj :
        content = f_obj.readline()
        print("文件内容 -> %s" %content) 

方法二:

有时候方法一也不能起到效果,比如当用C#调用python写的exe时就会失效。这就需要用到:

os.path.dirname(sys.argv[0])

具体使用方法和方法一相同,可以获取到当前文件的绝对路径。

 

posted @ 2020-04-17 17:14  Hi-Jimmy  阅读(58)  评论(0编辑  收藏  举报