Chrome driver下载地址: http://chromedriver.chromium.org/

# 创建WebDriver实例

如果出现下面错误

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {“method”:”xpath”,”selector”:”//*[@id=”1″]/h3/a”}
(Session info: chrome=76.0.3809.132)

可能是因为查找过快,网页未加载完毕,设置延时或循环等方法即可解决

# 打开网站
driver.get("https://selenium.dev");
# 获取当前 URL
driver.current_url
# 后退
driver.current_url
# 前进
driver.forward()
# 刷新
driver.navigate().refresh();
# 获取标题
driver.title
# 获得当前窗口的窗口句柄
driver.current_window_handle
# 创建新窗口(或)新标签页并且切换
driver.switch_to.new_window('tab') # 打开新标签页并切换到新标签页
driver.switch_to.new_window('window') # 打开一个新窗口并切换到新窗口
# 关闭窗口或标签页
driver.close();
# 会话结束时退出浏览器
driver.quit()

# 获取窗口大小
# 分别获取每个尺寸
width = driver.get_window_size().get("width")
height = driver.get_window_size().get("height")
# 或者存储尺寸并在以后查询它们
size = driver.get_window_size()
width1 = size.get("width")
height1 = size.get("height")

# 设置窗口大小
driver.set_window_size(1024, 768)
# 得到窗口的位置
# 分别获取每个尺寸
x = driver.get_window_position().get('x')
y = driver.get_window_position().get('y')
# 或者存储尺寸并在以后查询它们
position = driver.get_window_position()
x1 = position.get('x')
y1 = position.get('y')

# 将窗口移动到设定的位置。
driver.set_window_position(0, 0)
# 最大化窗口
driver.maximize_window()
# 全屏窗口
driver.fullscreen_window()

# 显式等待
"""显示等待 是Selenium客户可以使用的命令式过程语言。它们允许您的代码暂停程序执行,或冻结线程,直到满足通过的 条件 。这个条件会以一定的频率一直被调用,直到等待超时。这意味着只要条件返回一个假值,它就会一直尝试和等待"""
from selenium.webdriver.support.ui import WebDriverWait
driver.navigate("file:///race_condition.html")
el = WebDriverWait(driver).until(lambda d: d.find_element_by_tag_name("p"))
assert el.text == "Hello from JavaScript!"

# 隐式等待
"""还有第二种区别于显示等待 类型的 隐式等待 。通过隐式等待,WebDriver在试图查找_任何_元素时在一定时间内轮询DOM。当网页上的某些元素不是立即可用并且需要一些时间来加载时是很有用的。"""
driver = Firefox()
driver.implicitly_wait(10)
driver.get("http://somedomain/url_that_delays_loading")
my_dynamic_element = driver.find_element_by_id("myDynamicElement")

# 流畅等待
"""流畅等待实例定义了等待条件的最大时间量,以及检查条件的频率。
用户可以配置等待来忽略等待时出现的特定类型的异常,例如在页面上搜索元素时出现的NoSuchElementException"""
driver = Firefox()
driver.get("http://somedomain/url_that_delays_loading")
wait = WebDriverWait(driver, 10, poll_frequency=1, ignored_exceptions=[ElementNotVisibleException, ElementNotSelectableException])
element = wait.until(EC.element_to_be_clickable((By.XPATH, "//div")))


发表回复