如何获得;无显示“;来自selenium的html

如何获得;无显示“;来自selenium的html,selenium,Selenium,我试图通过使用selenium获得一些上下文,但是我不能只获得“display:none”部分内容。我尝试使用属性('innerHTML'),但仍然无法按预期工作 希望你能分享一些知识 [这是html][1] [1]: https://i.stack.imgur.com/LdDL4.png # -*- coding: utf-8 -*- from selenium import webdriver import time from bs4 import BeautifulSoup imp

我试图通过使用selenium获得一些上下文,但是我不能只获得“display:none”部分内容。我尝试使用
属性('innerHTML')
,但仍然无法按预期工作

希望你能分享一些知识

[这是html][1]

  [1]: https://i.stack.imgur.com/LdDL4.png


# -*- coding: utf-8 -*-
from selenium import webdriver
import time
from bs4 import BeautifulSoup
import re
from pyvirtualdisplay import Display
from lxml import etree

driver = webdriver.PhantomJS()
driver.get('http://flights.ctrip.com/')
driver.maximize_window()
time.sleep(1)
element_time = driver.find_element_by_id('DepartDate1TextBox')
element_time.clear()
element_time.send_keys(u'2017-10-22')
element_arr = driver.find_element_by_id('ArriveCity1TextBox')
element_arr.clear()
element_arr.send_keys(u'北京')
element_depart = driver.find_element_by_id('DepartCity1TextBox')
element_depart.clear()
element_depart.send_keys(u'南京')
driver.find_element_by_id('search_btn').click()
time.sleep(1)
print(driver.current_url)
driver.find_element_by_id('btnReSearch').click()
print(driver.current_url)

overlay=driver.find_element_by_id("mask_loading")
print(driver.exeucte_script("return arguments[0].getAttribute('style')",overlay))
driver.quit()
要检索属性“display:none”,可以使用以下代码行:

String my_display = driver.findElement(By.id("mask_loading")).getAttribute("display");
System.out.println("Display attribute is set to : "+my_display);

如果“元素样式”属性的值为“显示:无”,则该属性为隐藏元素。基本上,selenium不会与隐藏元素交互。您必须使用selenium的javascript执行器才能与之交互。您可以获得下面给出的样式值

WebElement overlay=driver.findElement(By.id("mask_loading"));

JavascriptExecutor je = (JavascriptExecutor )driver;
String style=je.executeScript("return arguments[0].getAttribute("style");", overlay);
System.out.println("style value of the element is "+style);
它打印值“z索引:12;显示:无

或者,如果您想获取innerHTML

String innerHTML=je.executeScript("return arguments[0].innerHTML;",overlay);
在Python中

overlay=driver.find_element_by_id("mask_loading")
style =driver.exeucte_script("return arguments[0].getAttribute('style')",overlay)


请参阅:SO的期望是,用户提问时不仅要进行研究以回答自己的问题,还要分享研究、代码尝试和结果。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!另请参阅:try getAttribute(“innerText”)或getAttribute(“textContent”)的可能重复谢谢Murthi,很高兴知道。因此,假设我正在使用python。现在必须转向JS来实现它。我会尽力让你知道的!在python中,有一个方法驱动程序。execute_script(),它等于javaHum中的executeScript。。。我想我以前尝试过执行_script(),但对我的示例不起作用。我刚刚粘贴了我使用的代码。werid的问题是,我可以得到“print(driver.current_url)”的正确结果,但每当我尝试将所有页面内容打印到一个文件或使用driver.find_元素时,预期的上下文从div类开始“flight list content”无论如何都会消失看起来网络使用了某种方式来禁止抓取它。
innerHTML=driver.execute_script("return arguments[0].innerHTML;", overlay)