使用硒去除内容不起作用

时间:2016-09-10 02:26:18

标签: javascript html selenium python-3.5

我愿意使用selenium登录this website。所以我导入了Web驱动程序,并将登录信息发送到该页面,我还导入了密钥。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

我以前用来制备硒,

chromedriver = "chromedriver.exe"
browser = webdriver.Chrome(chromedriver)
browser.get("https://m.adidas.com/us/myaccount-create-or-login")

我让浏览器等到页面加载使用"隐式等待功能"

网站中的用户名列包含HTML内容,



<input type="text" value="" placeholder="* EMAIL" data-placeholder="* Email" maxlength="50" class="textinput required trimspace" name="username" id="username">
&#13;
&#13;
&#13;

对于密码,它有

&#13;
&#13;
<input type="password" placeholder="* PASSWORD" data-placeholder="* Password" maxlength="50" autocomplete="off" name="password" value="" class="textinputpw required" id="password">
&#13;
&#13;
&#13;

我已经使用上面的代码找到了两个元素的id,然后我写了这段代码来发送个人信息

username1 = browser.find_element_by_id("username")
password1 = browser.find_element_by_id("password")
username1.send_keys(email.get()) # Used a gui entry box so why email.get()
password1.send_keys(password.get())

但上面的代码没有发送我不知道为什么的信息?你能帮我解决这个问题吗?

我也试过用x路径发送密钥。打印页面源以检查网站是否产生403访问被拒绝错误,但这不是我的情况。

如果出现任何问题,我是新手,

编辑: - 我的尝试:

username1 = browser.find_element_by_id("username")
browser.switch_to.frame(username1)
password1 = browser.find_element_by_id("password")
browser.switch_to.frame(password1)
username1.send_keys(email.get()) # Used a gui entry box so why email.get()
password1.send_keys(password.get())

2 个答案:

答案 0 :(得分:1)

您尝试访问的元素位于IFRAME

<iframe id="loginaccountframe" class="sso-iframe" src="https://cp.adidas.com/web/eCom/en_US/loadsignin?target=account" frameborder="0" scrolling="no"></iframe>

您需要切换到IFRAME才能看到它们。

http://selenium-python.readthedocs.io/navigating.html#moving-between-windows-and-frames

答案 1 :(得分:0)

实际上@JeffC是对的,有一个iframe。因此,在iframe中找到元素之前,您必须切换iframe

正如您在评论中提到的那样: -

  

我尝试添加browser.switch_to.frame(username1)

您实际上正在将username1元素切换为假设iframe元素是错误的。

您需要单独找到iframe元素作为您要查找的其他元素,然后切换到该iframe元素。但是,您可以在此处使用iframe切换到id,如下所示: -

browser.switch_to.frame("loginaccountframe")

#now do your login stuff inside iframe
username1 = browser.find_element_by_id("username")
username1.send_keys(email.get()) # Used a gui entry box so why email.get()

password1 = browser.find_element_by_id("password")
password1.send_keys(password.get())

#now after doing all stuff inside iframe you need to switch back to default content for further steps 
browser.switch_to.default_content()