没有无头模式,我可以毫无问题地登录。麻烦从打开(“ --headless”)模式开始,我得到:
selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{“ method”:“ id”,“ selector”:“ identifierId”}
问了这个问题之后,我被指出了这个解决方案:Log into gmail using Selenium in Python。并尝试了。仍然无法解决无头模式的问题,因为我找不到要单击的第一个元素。
platform=Windows NT 10.0.17134 x86_64
headless chrome=70.0.3538.110
chromedriver=2.44.609538
selenium = 3.141.0
python = 3.6
我的chromdriver选项:
options = Options()
options.add_argument('--window-size=1920x1080')
options.add_argument('--ignore-certificate-errors')
options.add_argument('--disable-gpu')
options.add_argument('--no-default-browser-check')
options.add_argument('--no-first-run')
options.add_argument('--test-type')
options.add_argument("--start-maximized")
options.add_argument('--headless')
我要查找的元素:
def login_submit(self):
driver.get('https://adwords.google.com/um/signin')
time.sleep(1)
driver.save_screenshot("test.png")
time.sleep(1)
emailElem = driver.find_element_by_id('identifierId')
actions = ActionChains(driver)
actions.move_to_element(emailElem).click_and_hold(emailElem)
driver.execute_script("arguments[0].click();", emailElem)
actions.send_keys('email').perform()
emailElem.send_keys(Keys.ENTER)
已截屏并显示了页面。
HTML
<div class="aXBtI Wic03c">
<div class="Xb9hP">
<input type="email" class="whsOnd zHQkBf" jsname="YPqjbf" autocomplete="username" spellcheck="false" tabindex="0" aria-label="Adres e-mail lub telefon" name="identifier" autocapitalize="none" id="identifierId" dir="ltr" data-initial-dir="ltr" data-initial-value="">
<div jsname="YRMmle" class="AxOyFc snByac" aria-hidden="true">e-mail</div>
</div>
<div class="i9lrp mIZh1c"></div>
<div jsname="XmnwAc" class="OabDMe cXrdqd Y2Zypf"></div>
</div>
我尝试了这种方法NoSuchElementException with headless chrome and selenium。还有一些:
find_element_by_xpath('//input[contains(@name, 'identifier')]')
or
driver.find_elements_by_xpath("//*[contains(text(), 'e-mail')]")
没有任何效果。请帮忙。