Python Selenium 有时会出现 java 脚本断言的隐藏框架
Python Selenium a hidden frame that appears sometimes with java script assert
我在这个我抓取的网站上每周会出现几次通知。我无法绕过它。
我可以运行代码。
el = driver.find_element_by_xpath("//input[@id='btnRead']")
driver.execute_script("arguments[0].click();", el)
它清除了它,但如果我将它留在我的代码中,它会给我一个没有这样的元素的异常。如果我尝试像这样将它包装在 try/catch 中。
from selenium.common.exceptions import NoSuchElementException
try:
el = driver.find_element_by_xpath("//input[@id='btnRead']")
driver.execute_script("arguments[0].click();", el)
except NoSuchElementException:
print(nonefound)
sleep(5)
driver.quit()
这也会清除它,如果它存在但如果不存在,则出错。
我假设我做错了什么,但我尝试了几个不同的版本,我总是得到错误,导致 windows 挂起并停止执行脚本的其余部分。
任何想法都会很棒。
如果你想继续你的脚本,你可以检查元素的长度。
如果元素的长度大于 0,则会点击。
if len(driver.find_elements_by_xpath("//input[@id='btnRead']"))>0 :
el = driver.find_element_by_xpath("//input[@id='btnRead']")
driver.execute_script("arguments[0].click();", el)
else:
print("nonefound")
或归纳WebDriverWait
() 和visibility_of_element_located
()
try:
el = WebDriverWait(driver,5).until(EC.visibility_of_element_located(("//input[@id='btnRead']")))
driver.execute_script("arguments[0].click();", el)
except NoSuchElementException:
print("nonefound")
您需要导入以下库。
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
有没有可能除了NoSuchElementException
还有其他的例外。 "hanging" 可能来自 TimeoutException
。尝试像这样打印异常:
from selenium.common.exceptions import NoSuchElementException
try:
el = driver.find_element_by_xpath("//input[@id='btnRead']")
driver.execute_script("arguments[0].click();", el)
except Exception as e:
print(e)
sleep(5)
driver.quit()
我在这个我抓取的网站上每周会出现几次通知。我无法绕过它。
我可以运行代码。
el = driver.find_element_by_xpath("//input[@id='btnRead']")
driver.execute_script("arguments[0].click();", el)
它清除了它,但如果我将它留在我的代码中,它会给我一个没有这样的元素的异常。如果我尝试像这样将它包装在 try/catch 中。
from selenium.common.exceptions import NoSuchElementException
try:
el = driver.find_element_by_xpath("//input[@id='btnRead']")
driver.execute_script("arguments[0].click();", el)
except NoSuchElementException:
print(nonefound)
sleep(5)
driver.quit()
这也会清除它,如果它存在但如果不存在,则出错。 我假设我做错了什么,但我尝试了几个不同的版本,我总是得到错误,导致 windows 挂起并停止执行脚本的其余部分。
任何想法都会很棒。
如果你想继续你的脚本,你可以检查元素的长度。
如果元素的长度大于 0,则会点击。
if len(driver.find_elements_by_xpath("//input[@id='btnRead']"))>0 :
el = driver.find_element_by_xpath("//input[@id='btnRead']")
driver.execute_script("arguments[0].click();", el)
else:
print("nonefound")
或归纳WebDriverWait
() 和visibility_of_element_located
()
try:
el = WebDriverWait(driver,5).until(EC.visibility_of_element_located(("//input[@id='btnRead']")))
driver.execute_script("arguments[0].click();", el)
except NoSuchElementException:
print("nonefound")
您需要导入以下库。
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
有没有可能除了NoSuchElementException
还有其他的例外。 "hanging" 可能来自 TimeoutException
。尝试像这样打印异常:
from selenium.common.exceptions import NoSuchElementException
try:
el = driver.find_element_by_xpath("//input[@id='btnRead']")
driver.execute_script("arguments[0].click();", el)
except Exception as e:
print(e)
sleep(5)
driver.quit()