在Selenium Python中检查网站的.readyState的正确语法是什么?
我正在尝试使用.execute\u脚本检查网站的.readyState,但不断收到错误 我在chromedriver中使用的pageLoadStrategy为“none”,因此我试图测试readystate网站不再是“loading” 注意:这个问题是特定于Python的在Selenium Python中检查网站的.readyState的正确语法是什么?,python,selenium,selenium-webdriver,webdriver,pageloadstrategy,Python,Selenium,Selenium Webdriver,Webdriver,Pageloadstrategy,我正在尝试使用.execute\u脚本检查网站的.readyState,但不断收到错误 我在chromedriver中使用的pageLoadStrategy为“none”,因此我试图测试readystate网站不再是“loading” 注意:这个问题是特定于Python的 WebDriverWait(driver, timeout=20).until( driver.execute_script('return document.readyState') == 'interactive'
WebDriverWait(driver, timeout=20).until(
driver.execute_script('return document.readyState') == 'interactive'
)
值=方法(自身驱动程序)
TypeError:“str”对象不可调用
我还尝试使用lambda,它不会抛出错误,但是打印readystate将返回冲突的结果
WebDriverWait(driver, timeout=20).until(
lambda driver: driver.execute_script('return document.readyState') == 'interactive'
)
print(driver.execute_script('return document.readyState'))
装载
您可以将条件移动到JS中:
WebDriverWait(driver, timeout=20).until(
lambda driver: driver.execute_script('return document.readyState === "interactive"')
)
print(driver.execute_script('return document.readyState'))
如果网站呈角度,则可以使用pendingRequests.length==0
请参阅
希望这有帮助 使用
pageLoadStrategy
作为none
然后对文档使用WebDriverWait。readyState
作为交互式
不是一个好方法。您可以对文档使用pageLoadStrategy
或WebDriverWait。readyState如下所示:
要将pageLoadStrategy
配置为None
,您可以使用以下任一解决方案:
- Firefox:
from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities caps = DesiredCapabilities().FIREFOX caps["pageLoadStrategy"] = "none" #caps["pageLoadStrategy"] = "eager" # interactive #caps["pageLoadStrategy"] = "normal" # complete driver = webdriver.Firefox(desired_capabilities=caps, executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe') driver.get("http://google.com")
from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities caps = DesiredCapabilities().CHROME caps["pageLoadStrategy"] = "none" #caps["pageLoadStrategy"] = "eager" # interactive #caps["pageLoadStrategy"] = "normal" # complete driver = webdriver.Chrome(desired_capabilities=caps, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe') driver.get("http://google.com")
- 铬合金:
from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities caps = DesiredCapabilities().FIREFOX caps["pageLoadStrategy"] = "none" #caps["pageLoadStrategy"] = "eager" # interactive #caps["pageLoadStrategy"] = "normal" # complete driver = webdriver.Firefox(desired_capabilities=caps, executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe') driver.get("http://google.com")
from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities caps = DesiredCapabilities().CHROME caps["pageLoadStrategy"] = "none" #caps["pageLoadStrategy"] = "eager" # interactive #caps["pageLoadStrategy"] = "normal" # complete driver = webdriver.Chrome(desired_capabilities=caps, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe') driver.get("http://google.com")
文档。readyState
作为急切的
:
WebDriverWait(driver, 20).until(lambda driver: driver.execute_script("return document.readyState").equals("interactive"))
WebDriverWait(driver, 20).until(lambda driver: driver.execute_script("return document.readyState").equals("complete"))
使用WebDriverWait等待文档。readyState
作为正常
:
WebDriverWait(driver, 20).until(lambda driver: driver.execute_script("return document.readyState").equals("interactive"))
WebDriverWait(driver, 20).until(lambda driver: driver.execute_script("return document.readyState").equals("complete"))
您可以在中找到详细的讨论
奥特罗
这应该有助于您的解决方案似乎可以与“交互式”一起使用,但在尝试“lambda驱动程序:驱动程序。执行”脚本(“return document.readyState=='complete')”时,我在打印语句中得到了相同的“加载”尝试:
lambda驱动程序:驱动程序。执行”脚本(“return document.readyState=='complete”)
OP似乎已经将“pageLoadStrategy”配置为“None”。。。“我在chromedriver中使用了“无”的页面加载策略”@MosheSlavin似乎不清楚OP的要求,现在更新了答案。