在website上,硒脚本无法找到登录名和密码字段。我试图通过xpath,css选择器,名称和类名称进行搜索。但没有任何效果。
from selenium import webdriver
from time import sleep
driver = webdriver.Firefox()
driver.get("https://login.aliexpress.com/")
driver.find_element_by_id("fm-login-id").send_keys("test_id")
driver.find_element_by_id("fm-login-password").clear()
driver.find_element_by_id("fm-login-password").send_keys("test_pass")
driver.find_element_by_id("fm-login-submit").click()`
我试图在Selenium IDE的帮助下做到这一点,并且一切都在GUI中工作。但是在我将代码导出到python并运行它之后,程序给出了一个错误,即找不到该元素。
答案 0 :(得分:3)
登录表单位于框架内部,您需要先切换到该表单。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="tabs">
<li class="active"><a href="#" class="another-class">Link 1</a></li>
<li><a href="#" class="another-class">Link 2</a></li>
<li><a href="#" class="another-class">Link 3</a></li>
</ul>
答案 1 :(得分:1)
由于所需元素位于<iframe>
中,因此您必须:
您可以使用以下解决方案:
使用CSS_SELECTOR
:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe')
driver.get("https://login.aliexpress.com/")
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe#alibaba-login-box[src^='https://passport.aliexpress.com/mini_login.htm?']")))
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.fm-text#fm-login-id"))).send_keys("test_id")
driver.find_element_by_css_selector("input.fm-text#fm-login-password").send_keys("test_pass")
driver.find_element_by_css_selector("input.fm-button#fm-login-submit").click()
临时浏览快照:
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
参考: