为什么硒有时会定位对象,而有时却没有呢?

时间:2020-10-31 00:20:42

标签: python selenium selenium-chromedriver

早上好, 我正在尝试自动化简单的在线过程:转到此网站http://nvidia-research-mingyuliu.com/gaugan/ 选中小方框,更新图片,渲染并单击下载按钮将其下载。 我已经编写了非常直观且非常简短的代码,但由于某些原因,有时它会起作用,有时却不会。 果然,有时python返回以下错误: 没有这样的元素:无法找到元素:{“ method”:“ css选择器”,“ selector”:“ [id =” myCheck“]”}

我的代码是:

import selenium
import time

from selenium import webdriver
# Using Chrome to access web
driver = webdriver.Chrome(executable_path='/Users/Marco/Downloads/chromedriver')

# Open the website
driver.get('http://nvidia-research-mingyuliu.com/gaugan/')
# Select the checkbox
time.sleep(5)
check_box = driver.find_element_by_id('myCheck')
check_box.click()
# Upload File button
element = driver.find_element_by_id("myCheck")
driver.execute_script("arguments[0].click();", element)
choose_file = driver.find_element_by_id('segmapfile')
# Send the file location to the button
choose_file.send_keys('/Users/Marco/Desktop/Foto upload/Schermata 2020-10-31 alle 00.07.03.png')
#Locate submit button and click
submit_assignment = driver.find_element_by_id('btnSegmapLoad')
submit_assignment.click()
#render
render_button = driver.find_element_by_id('render')
render_button.click()
#download
save_box = driver.find_element_by_id('save_render')
time.sleep(5)
save_box.click()

为什么会这样?我应该如何解决? 谢谢

1 个答案:

答案 0 :(得分:0)

使用显式等待来等待某些事情发生,而不是仅等待5秒钟的“ time.sleep(5)”:

import selenium
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait

# Using Chrome to access web
driver = webdriver.Chrome(executable_path='/Users/Marco/Downloads/chromedriver')

# Open the website
driver.get('http://nvidia-research-mingyuliu.com/gaugan/')
# Wait for checkbox to be located
check_box_wait = EC.presence_of_element_located((By.ID, 'myCheck'))
WebDriverWait(driver, 10).until(check_box_wait)
# Select the checkbox
check_box = driver.find_element_by_id('myCheck')
check_box.click()