Ich muss mithilfe von Selenium in Python überprüfen, ob ein Bild auf der Seite angezeigt wird.
Schauen wir uns zum Beispiel das Logo in der oberen linken Ecke der Seite https://openweathermap.org/ an.
Ich verwende execute_script
und mein Code lautet:
def test_image(driver): driver.get('https://openweathermap.org/') time.sleep(10) image = driver.find_element(By.CSS_SELECTOR, "#first-level-nav > li.logo > a > img") print(image) print(driver.execute_script("return (typeof arguments[0].naturalWidth!=\"undefined\");", image)) print(driver.execute_script("return (typeof arguments[0].naturalWidth>0);", image)) print(driver.execute_script("return (arguments[0].naturalWidth);", image))
Ich habe dieses Ergebnis erhalten:
True False 431
Warum typeof argument[0].naturalWidth>0
是 False
,而 arguments[0].naturalWidth
是 431
? Und das Bild wird auf der Seite korrekt gerendert.
Update: Der korrekte Code lautet:
print(driver.execute_script("return (arguments[0].naturalWidth>0);", image))
typeof
运算符优先于>
。