我用python和Edge浏览器
我需要得到 60 个“[data-sqe='name']”,但控制台只输出 30 个项目。
即使我为加载时间添加了 15 秒的睡眠,webdriver 加载的页面似乎也无法完全加载。
我尝试了一些方法,但页面甚至没有显示滚动条(第一张图片)。
请帮我找到我需要的所有物品。
Name= [my_elem.text for my_elem in driver.find_elements(By.CSS_SELECTOR,"div.row.shopee-search-item-result__items > div > a div[data-sqe='name'] +div")]
As per my assumption, you can write the Refresh() Method post landing on the page or you can write the for loop and if condition and this loop will polling every 5 seconds.
1- Method
driver.navigate().Refresh();
2- Method
int RetryforRefresh=10;
for(int i=1;i<=RetryforRefresh.size();i++)
{
//here gave the XPath of the element which appears after some time.
if(driver.findelement(By.xpath(""))).isDisplayed()==true)
{
//print page loaded successfully
Break;
}
else
{
driver.navigate().Refresh();
}
}
3- For finding all the elements from the page, probably you can use the cssSelector for that.
Webelement allElement=driver.findelement(By.CssSelector("*"));
String allElemt=allElement.getText();
似乎由于延迟加载而无法加载所有元素。所以你可以尝试使用 webdriver 的 execute_script 方法向下滚动页面。例如:
for i in range(5):
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(2)
name_elements = driver.find_elements(By.CSS_SELECTOR,"div.row.shopee-search-item-result__items > div > a div[data-sqe='name'] +div")