首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Selenium Webdriver-python无法找到动态元素,尝试了所有可能的方法

Selenium Webdriver-python无法找到动态元素,尝试了所有可能的方法
EN

Stack Overflow用户
提问于 2018-08-01 06:06:37
回答 1查看 229关注 0票数 1

登录后,我可以成功地导航到所需的页面。静态元素被和平地定位和打印。页面进行了JavaScript调用,内容在大约4-5秒后更新,我无法定位动态元素。

我在加载Javascript元素之前和之后附加了Inspect元素的图像。

请看一下下面的代码,并提出可能的解决方案。附注: 100次中有2-3次是有效的。

代码语言:javascript
复制
layer = "https://desired.website"
driver.get(layer)
driver.find_element_by_id("email").send_keys('my@email.com')
driver.find_element_by_id("password").send_keys('myPassword')
driver.find_element_by_class_name("css-173kae7").click()

#NOW I'M SUCCESSFULLY LOGGED IN
#Opening the Desired Page, This is a static element
wait = WebDriverWait(driver, 30)
element = wait.until(EC.visibility_of_element_located((By.CLASS_NAME, "css-1nga9gi")))
driver.execute_script('''window.open("desired.page","_blank");''')

#Successfully opened desired page and switched to newly opened tab
#Trying to access the element present in <tbody> tag, please refer "Inspect Element after JavaScript elements are loaded"- image.
wait = WebDriverWait(driver, 30)
element = wait.until(EC.visibility_of_element_located((By.CLASS_NAME, "css-167dqxg")))
check = driver.find_elements_by_class_name("ccss-13ozsj7")
for e in check:
    print(e.text)
print("ALL DATA SUCCESSFULLY PRINTED")

30秒内没有任何反应,我得到超时错误,并显示“所有数据已成功打印”。

我得到的错误代码是:

代码语言:javascript
复制
element = wait.until(EC.visibility_of_element_located((By.CLASS_NAME, "css-167dqxg")))
File "C:\Python\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 

请看一下Inspect元素。

Inspect Element at the beginning of Page Load

Inspect Element after JavaScript elements are loaded

EN

回答 1

Stack Overflow用户

发布于 2018-08-09 22:10:55

当使用Python时,使用'starts-with‘而不是'undefined-object’

电子邮件地址XPath.//*@id=‘EMAIL -undefined-objectObject-26149’

电子邮件‘driver.find_element_by_xpath(".//inputstarts-with(@id,’)“包含‘driver.find_element_by_xpath(".//inputcontains(@id,’电子邮件‘)的.clear() driver.find_element_by_xpath(".//inputstarts-with(@id,'email')".send_keys("scotty.mitch@gmail.com")) ....or’)”.clear()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51622782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档