运行我的测试时出现此错误:org.openqa.selenium.StaleElementReferenceException:元素不再附加到DOM
关于如何解决上述异常的任何想法?这发生在我的网格中,它有一个动态的ref Xpath表达式
我正在尝试学习PageFactory模型.我理解这样一个事实,当我们这样做时initElements,WebElements就位于其中.比如说,我点击了一个webelement,因此DOM中的其他一个元素发生了变化.现在,显然我会在StaleElementReferenceException这里得到一个.我该如何解决这个问题?
我是否应该再次发现特定的WebElement知道DOM中的WebElement属性可能发生了变化?还是有另一种方法来处理这个问题?
selenium pageobjects selenium-webdriver page-factory staleelementreferenceexception
先决条件。
您需要在Instagram上拥有一个帐户才能使用此脚本。
设置测试环境:
登录,打开所需列表(正常工作):
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep
driver = webdriver.Chrome(
# driver = webdriver.Firefox(
# driver = webdriver.PhantomJS(
service_args=['--ignore-ssl-errors=true', '--ssl-protocol=any'])
driver.get("https://instagram.com/accounts/login")
username = driver.find_element_by_name("username")
password = driver.find_element_by_name("password")
username1 = 'instagram' # change it!
password1 = 'instagrampassword1' # change it!
username.send_keys(username1)
password.send_keys(password1)
submit_button = driver.find_element_by_css_selector(
'#react-root > div > article > div > div:nth-child(1) > div > form > span > button')
submit_button.click()
sleep(2)
link = 'https://www.instagram.com/youtube/'
driver.get(link)
driver.implicitly_wait(2)
driver.find_elements_by_class_name("_218yx")[2].click()
Run Code Online (Sandbox Code Playgroud)
滚动错误。如何解决这个问题?
如何在此页面上正确聚焦和滚动? …
selenium dom selenium-webdriver webdriverwait expected-condition
如果我们创建:
ChromeDriver driver=new ChromeDriver();
Run Code Online (Sandbox Code Playgroud)
chrome 驱动程序方法将被执行。
如果我们创建:
WebDriver driver=new ChromeDriver();
Run Code Online (Sandbox Code Playgroud)
再次ChromeDriver执行方法[根据方法覆盖]。
那为什么我们只在执行时写后一个呢?
java selenium webdriver selenium-webdriver webdriver-w3c-spec
selenium ×5
java ×2
webdriver ×2
dom ×1
page-factory ×1
pageobjects ×1
python ×1
staleelementreferenceexception ×1
testing ×1