我在heroku服务器上使用python和chromedriver部署了一个硒脚本。
编辑:驱动程序已正确配置,并且它确实启动了实例,执行了任务。但是,对于随后的调用,驱动程序无法找到该元素-然后再次进行第三次迭代,便能够找到该元素。
我不确定明确的睡眠语句是否会起作用。
这是我的硒脚本中的一小段代码:
def execute_entry(url,proxy,email):
try:
browser = driver.load_chrome_driver(proxy)
browser.get(url)
browser.maximize_window()
browser.execute_script("window.scrollTo(0, 1040)")
sleep(5)
print("Launching browser")
# check if the page is still available
try:
print("Checking for page")
element_present = expected_conditions.presence_of_element_located((By.XPATH, '//*[@id="comp_firstname"]'))
WebDriverWait(browser, 20).until(element_present)
except Exception as e:
# exit script
logging.exception("message")
print("Unable to locate element")
message = "There seems to be an issue with your registration. Entry is probably closed or their server is not responsive at the moment. Timed out waiting for page to load. Please try again later!"
email_ops.send_email(email, 'Entry Status: Error', message)
browser.quit()
return False
# register - if page is available
.....
.....
# rest of the selenium script to fill the form details
该脚本在本地服务器上测试时运行良好。
您知道这里可能出什么问题吗?
答案 0 :(得分:0)
我遇到了同样的问题,经过一番挖掘,我发现了this post。
显然,“ Google根据您的用户代理呈现了不同的html”。我完成了该文章中所示的用户代理设置,但是在python中:
chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36")
在那之后一切都很好!