Chrome 错误:无法使用python selenium webscaper登录Web of Science网站

z9gpfhce  于 12个月前  发布在  Go
关注(0)|答案(1)|浏览(100)

我正在尝试登录Web of Science:https://mjl.clarivate.com/login;createAccount=false;referrer=%2Fhome
我必须用我的数据填充“电子邮件地址”和“密码”框,我在Python上使用Selenium webscaper。我已经尝试使用xpath、css_selector和class_name,但结果仍然相同:我不能自动访问这个网站,因为它找不到元素(xpath,css_selector等)。(即NoSuchElementException
这是一个使用电子邮件和xpath的示例

xpath = "/html/body/microui-app/div/div/microui-base/div/div[1]/div/base-login/div/div[3]/div[1]/login/steam-login/form/mat-form-field[1]/div/div[1]/div/input"

WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, xpath ))).click() 

WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, xpath))).send_keys(my_email)

我已经试了两天了,还从这个页面选择了其他的xpath(我不是Maven,所以我想我一直在xpath中弄错了一些东西(拿错了一个))。有人对这个问题有什么想法吗?谢谢你,谢谢

ws51t4hk

ws51t4hk1#

您的登录容器放置在iframe #loginIframe中,因此要访问放置在其中的内部元素,您应该将上下文更改为该iframe。
此外,您应该在开始输入之前关闭cookie同意,因为同意会拦截单击提交按钮。
点击登录后,您应该将上下文更改为body -default_content

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

driver.get('https://mjl.clarivate.com/login;createAccount=false;referrer=%2Fhome')
wait.until(EC.visibility_of_element_located((By.CLASS_NAME, 'banner-close-button'))).click()
login_frame = wait.until(EC.presence_of_element_located((By.ID, 'loginIframe')))

driver.switch_to.frame(login_frame)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '[name=email]'))).send_keys('[email protected]')
driver.find_element(By.CSS_SELECTOR, '[type=password]').send_keys('somepass')
driver.find_element(By.CSS_SELECTOR, 'button[type=submit]').click()
driver.switch_to.default_content()

相关问题