定位一组元素
self.driver.find_elements_by_class_name(element)
获取一组元素下的某个元素
# num: 从0开始计数,指定该组元素的第几个元素
self.driver.find_elements_by_class_name(element)[num]
上传图片和文件:注意,定位要定到input,要不然传不上去;最好用相对路径
# 获取图片的相对路径
path = '{0}/common/decorators/heard.jpg'.format(os.path.dirname(os.path.dirname(__file__)))
# 使用send_keys()方法上传
self.find_element_by_css_selector('input.ant-input').send_keys(path)
等待元素加载
from selenium.webdriver.support import wait
def wait(self, element, by=By.CSS_SELECTOR, timeout=30, interval=0.5):
"""
显示的等待页面加载并检查页面元素
:param timeout:
:param interval:
:param element:
:return:
"""
wait.WebDriverWait(self.driver, timeout=timeout, poll_frequency=interval).until(EC.presence_of_element_located((by, element)))
# 使用示例:
def find_element_by_xpath(self, element):
"""
根据xpath点击获取元素
:param element:
:return:
"""
self.wait(element, by=By.XPATH)
return self.driver.find_element_by_xpath(element)
def find_element_by_name(self, element):
"""
根据name点击获取元素
:param element:
:return:
"""
self.wait(element, by=By.NAME)
return self.driver.find_element_by_name(element)
判断元素是否存在
from selenium.webdriver.support import wait
def is_element_exist(self, locator: tuple):
"""
结合 WebDriverWait 和 expected_conditions 判断元素是否存在,
每间隔 1 秒判断一次,30s 超时,存在返回 True,不存返回 False
:param locator: locator 为元组类型,如("id", "yoyo")
:return:
"""
try:
wait.WebDriverWait(self.driver, 30, 1).until(EC.presence_of_element_located(locator))
return True
except:
return False
拖动滚动条到指定element 可见的位置
def set_scroll_into_view(self, element):
"""
拖动滚动条到指定element 可见的位置
element:定位的元素
:return:
"""
self.driver.execute_script("arguments[0].scrollIntoView();", element)
# 使用示例
self.set_scroll_into_view(self.driver.find_element_by_css_selector("span.title___JTR8F"))
设置浏览器滚动条位置
def set_window_scroll_position(self, x: int, y: int) -> None:
"""
设置浏览器滚动条位置
:param int x:横坐标
:param int y:纵坐标
:return:
"""
scroll_top = int(self.driver.execute_script('return document.documentElement.scrollTop'))
self.driver.execute_script('document.documentElement.scrollLeft={0};'.format(x))
self.driver.execute_script('document.documentElement.scrollTop={0};'.format(y + scroll_top))
网友评论