为了账号安全,请及时绑定邮箱和手机立即绑定

Selenium 中的 IF / THEN 语句

Selenium 中的 IF / THEN 语句

饮歌长啸 2023-06-20 10:33:40
我运行这段代码#Gets to the Calendar for the week with the Login Detailscalendar = driver.get('https://www.investing.com/economic-calendar/')time.sleep(5)driver.find_element_by_xpath('/html/body/div[9]/div[3]')driver.find_element_by_xpath('//*[@id="onetrust-accept-btn-handler"]').click()time.sleep(5)driver.find_element_by_xpath('/html/body/div[10]/div')driver.find_element_by_xpath('/html/body/div[10]/div/div[4]/button[1]').click()有时我成功有时我得到错误ElementClickInterceptedException: element click intercepted: Element <a onclick="overlay.overlayLogin();" href="javascript:void(0);" class="login bold">...</a> is not clickable at point (821, 19). Other element would receive the click: <div class="allow-notifications-popup-wrapper shown">...</div>  (Session info: chrome=84.0.4147.135)因为顽皮的弹出窗口/警报并不总是出现。我怎样才能写一个如果(弹出在那里)然后点击它或者IF pop-not有跳过下面两行吗?谢谢
查看完整描述

3 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

WebElement ele = driver.findElement(By.xpath("element_xpath"));

JavascriptExecutor executor = (JavascriptExecutor)driver;

executor.executeScript("arguments[0].click();", ele);

应该能够完全绕过弹出窗口。


查看完整回答
反对 回复 2023-06-20
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

JavaScript 点击将起作用,但它绕过了可能是潜在错误的实际原因。

ElementClickInterceptedException: element click intercepted:

由于多种原因,可能会发生此异常。根据 selenium 文档,上述异常的原因是:

指示无法正确执行单击,因为目标元素以某种方式被遮挡。

要解决此问题,您可以使用 webdriverwait 然后检查元素是否可单击,然后单击它

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "YOURXPATH']"))).click()
查看完整回答
反对 回复 2023-06-20
?
Helenr

TA贡献1780条经验 获得超3个赞

可能有很多方法可以解决您的问题,但是由于您基本上是在尝试避免导致这种确切错误的情况,所以我认为使用 TRY/EXCEPT 是最简单的方法:


try:

    driver.find_element_by_xpath('/html/body/div[10]/div/div[4]/button[1]').click()

except ElementClickInterceptedException:

    pass

它能解决你的问题吗?


查看完整回答
反对 回复 2023-06-20
  • 3 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信