关于 Python 中的 Selenium...
from seleniumbase import Driver
(seleniumbase) 和 from selenium import webdriver
(selenium, seleniumwire) 有什么区别?
“用例”有什么区别?
我只看到构造函数的差异:seleniumbase 驱动程序更难设置选项,然后对对象的操作是相同的。
from seleniumbase import Driver
driver = Driver(uc=False, headless=True, proxy=proxy, incognito=None, user_data_dir=None, extension_dir=None, binary_location=None)
from selenium import webdriver as Driver
driver = Driver.Chrome(options=options)
听起来你正在尝试比较这个:
from seleniumbase import Driver
driver = Driver()
与:
from selenium import webdriver
driver = webdriver.Chrome()
seleniumbase
driver
比常规的 Selenium 有更多的方法。 seleniumbase 驱动程序方法还具有自动选择器检测、智能等待、特殊断言方法、允许截断 URL 并支持 TAG:contains("TEXT")
选择器。这意味着你可以这样做:
from seleniumbase import Driver
driver = Driver()
driver.open("seleniumbase.io/simple/login")
driver.type("#username", "demo_user")
driver.type("#password", "secret_pass")
driver.click('a:contains("Sign in")')
driver.assert_exact_text("Welcome!", "h1")
driver.assert_element("img#image1")
driver.highlight("#image1")
driver.click_link("Sign out")
driver.assert_text("signed out", "#top_message")
driver.quit()
还有一些其他差异,例如传递选项的方式。 SeleniumBase 选项作为参数传递到
Driver()
Manager 格式的 Driver()
定义中(还有许多其他格式,例如 SB()
、BaseCase
等)
SeleniumBase 还有一个 UC 模式选项,它具有特殊方法让您的机器人绕过阻止常规 Selenium 机器人的验证码:
from seleniumbase import Driver
driver = Driver(uc=True)
driver.uc_open_with_reconnect("https://top.gg/", 6)
driver.quit()
这是一个需要点击的验证码绕过示例:
from seleniumbase import Driver
driver = Driver(uc=True)
driver.uc_open_with_reconnect("https://seleniumbase.io/apps/turnstile", 3)
driver.uc_switch_to_frame("iframe")
driver.uc_click("span.mark")
driver.sleep(3)
driver.quit()