问题描述
希望你们一切都好。我尝试编写“gmail 创建者”。 这个项目对我来说真的很重要,所以我会非常 感谢如果有人可以帮助我。如果你愿意,对于那个 可以帮助我,如果这行得通,将在贝宝上获得一些钱。 不多,但有一些钱。也对不起我的英语我来自德国。 所以 : 我现在挣扎了 4.5 小时。 它只是找不到元素“名字”。我通过正常方式尝试过: 驱动程序通过 xpath 查找元素但没有找到,还有 id 和很多东西。 然后我注意到,页面上有一个 iframe,所以我之前必须切换到它。 但是现在找不到这个iframe。
信息: -Python -硒 -Chrome 网络驱动程序
网站: https://www.google.com/intl/de/gmail/about/#
代码:
def main():
options = webdriver.ChromeOptions()
options.add_argument("--window-size=950,1000")
driver = webdriver.Chrome(options=options)
driver.get("https://www.google.com/intl/de/gmail/about/#")
time.sleep(randint(1,3))
#click create account
while True:
try:
driver.find_element_by_xpath("/html/body/div[2]/div[1]/div[4]/ul[1]/li[3]/a").click()
break
except:
yeet = 1
#works all well till here
#Now I am struggling finding element,firstname element
#firstname_input = driver.find_element_by_xpath("/html/body/div[1]/div[1]/div[2]/div[1]/div[2]/div/div/div[2]/div/div[1]/div/form/span/section/div/div/div[1]/div[1]/div[1]/div/div[1]/div/div[1]/input")
#iframe = driver.find_element_by_xpath("/html/body/iframe")
#iframe = driver.find_element_by_tag_name("iframe")
#driver.switch_to.frame(iframe)
###all didnt work
main()
解决方法
点击“创建账户”按钮会打开一个新窗口。
所以,你必须切换到那个新窗口。
为此,您应该执行以下操作:
new_window = driver.window_handles[1]
driver.switch_to_window(new_window)
现在您可以访问“firstname”元素和那里的所有其他元素。
如果您希望最终回到第一个窗口,只需与上述类似:
initial_window = driver.window_handles[0]
driver.switch_to_window(initial_window)
另外,请不要使用像"/html/body/div[2]/div[1]/div[4]/ul[1]/li[3]/a
这样的长绝对定位符。
可以通过此 //li/a[@data-action="create an account" and (contains(@class,'button'))]
XPath