我发现了类似的问题,但没有当前答案或问题的解决方案。
我必须使用硒(pythom)登录网站。输入用户后,密码并按一个按钮将重定向到另一个页面(相同的URL,但已重新加载)。由于最终服务器上未安装chrome或firefox,因此必须使用phantomjs。两者都可以正常使用,但是在幻像中单击按钮存在问题。
找到所有元素并加载了文本,但这不是最终的点击。
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
capabilities = dict(DesiredCapabilities.PHANTOMJS)
capabilities["phantomjs.page.settings.resourceTimeout"] = ('20000')
capabilities["phantomjs.page.settings.userAgent"] = ('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36')
service_args=['--ignore-ssl-errors=true', '--ssl-protocol=any']
browser = webdriver.PhantomJS(executable_path = path_browser, \
desired_capabilities=capabilities, \
service_args = service_args)
browser.set_window_size(1400,1000)
browser.get(url_login)
timeout = 10
wait = WebDriverWait(browser, timeout)
input_usuario = wait.until(EC.presence_of_element_located((By.ID,'name')))
input_pass = browser.find_element_by_id("pass")
input_usuario.send_keys(usuario)
input_pass.send_keys(password)
button_login = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="__next"]/div/div/form/div[4]/button[1]')))
button_login.click()
time.sleep(5)
# debug
print(browser.current_url)
print(browser.page_source)
browser.save_screenshot('screenshot.png')
我们添加等待而未解决问题。有任何想法吗?谢谢
是否可以告诉我们它是什么网站?
如果您确定xpath正确,那么我认为该网站带有标签<iframe>
。因此,您应该使用browser.switch_to.frame(TheiframeId)
。然后使用find_element_by_xpath()
查找此按钮并单击它。