专业编程基础技术教程

网站首页 > 基础教程 正文

第九节 DrissionPage入门 特性和亮点-特性演示-与 selenium 对比

ccvgpt 2024-08-04 12:13:02 基础教程 16 ℃

? 与 selenium 对比

以下代码实现一模一样的功能,对比两者的代码量:

用显性等待方式查找第一个文本包含 some text 的元素。

第九节 DrissionPage入门 特性和亮点-特性演示-与 selenium 对比

# 使用 selenium:
element = WebDriverWait(driver).until(ec.presence_of_element_located((By.XPATH, '//*[contains(text(), "some text")]')))

# 使用 DrissionPage:
element = page('some text')

跳转到一个标签页

# 使用 selenium:
driver.switch_to.window(driver.window_handles[0])

# 使用 DrissionPage:
page.to_tab(page.latest_tab)

按文本选择下拉列表

# 使用 selenium:
from selenium.webdriver.support.select import Select
select_element = Select(element)
select_element.select_by_visible_text('text')

# 使用 DrissionPage:
element.select('text')

拖拽一个元素

# 使用 selenium:
ActionChains(driver).drag_and_drop(ele1, ele2).perform()

# 使用 DrissionPage:
ele1.drag_to(ele2)

滚动窗口到底部(保持水平滚动条不变)

# 使用 selenium:
driver.execute_script("window.scrollTo(document.documentElement.scrollLeft, document.body.scrollHeight);")

# 使用 DrissionPage:
page.scroll.to_bottom()

设置 headless 模式

# 使用 selenium:
options = webdriver.ChromeOptions()
options.add_argument("--headless")

# 使用 DrissionPage:
set_headless(True)

获取伪元素内容

# 使用 selenium:
text = webdriver.execute_script('return window.getComputedStyle(arguments[0], "::after").getPropertyValue("content");', element)

# 使用 DrissionPage:
text = element.pseudo.after

获取 shadow-root

新版 selenium 已可直接获取 shadow-root,但生成的 ShadowRoot 对象功能实在是太少了。

# 使用 selenium:
shadow_element = webdriver.execute_script('return arguments[0].shadowRoot', element)

# 使用 DrissionPage:
shadow_element = element.shadow_root

用 xpath 直接获取属性或文本节点(返回文本)

# 使用 selenium:
相当复杂

# 使用 DrissionPage:
class_name = element('xpath://div[@id="div_id"]/@class')
text = element('xpath://div[@id="div_id"]/text()[2]')

最近发表
标签列表