我目前正在使用python 3.6.5,selenium版本3.14.0
如果我创建了如下所示的网络元素:
driver.execute_script("""var body = document.getElementsByTagName('body').item(0);var div = document.createElement('div');div.setAttribute('id', 'ZZZ');body.appendChild(div);""")
我无法使用以下内容:
wait.until( expected_conditions.presence_of_element_located( (By.ID, 'ZZZ') ) )
我已经仔细检查过是否成功创建了该元素,但是使用selenium包提供的API(例如find_element_by_id和上面的脚本)无法找到该元素。
问题:在execute_script之后注入新元素之后,我还需要做其他事情吗?还是目前,这不可能吗?
我可以通过以下方式获取元素:
new_element = driver.execute_script('return document.getElementById("ZZZ");')
但是,如果我不能使用selenium包提供的默认API(例如find_element_by_id),这对我来说将很困难
下面的代码对我有用:
driver.get('http://www.google.com') elem = driver.find_element_by_name("q") driver.execute_script("var body = document.getElementsByTagName('body').item(0);var div = document.createElement('div');div.setAttribute('id', 'ZZZ');body.appendChild(div);") element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "ZZZ")) ) driver.quit()