Безголовый Chrome не обнаруживает элементы css

Я обнаружил, что Chrome без головы, похоже, не обнаруживает элементы. Следующий сценарий не работает.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui  import WebDriverWait

options = Options()
options.add_argument("--headless")
driver = webdriver.Chrome(chrome_options=options)
driver.set_window_size(1024, 600)
driver.maximize_window()

driver.get('https://www.sportsbet.com.au/betting/soccer?LeftNav')

wait = WebDriverWait(driver, 10)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".link")))
print('hi')

Поменяйте на безголовый.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Chrome()
driver.set_window_size(1024, 600)
driver.maximize_window()

driver.get('https://www.sportsbet.com.au/betting/soccer?LeftNav')

wait = WebDriverWait(driver, 10)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".link")))
print('test2')

Успех!

Я получаю за безголовый:

line 49, in <module>
    wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".link")))
  File "C:\Users\Django\AppData\Local\Continuum\miniconda3\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 

Измените css: div: nth-child (1)> a> span.team-name.ib

Я все еще получаю ту же ошибку. Почему он это делает?


person Community    schedule 20.12.2017    source источник
comment
Невозможно открыть URL https://www.sportsbet.com.au/betting/soccer?LeftNav. Не могли бы вы поделиться HTML, пожалуйста?   -  person DebanjanB    schedule 20.12.2017
comment
@DebanjanB Попробуйте vpn или прокси. Это может быть ваша региональная блокировка. источник просмотра: sportsbet.com.au/betting/soccer?LeftNav   -  person    schedule 20.12.2017
comment
Это довольно странно.   -  person    schedule 22.12.2017


Ответы (2)


Кажется, он перенаправляет вас, если вы используете браузер без головы.

Добавлять:

user_agent = 'I LIKE CHOCOLATE'
options.add_argument(f'user-agent={user_agent}')

Теперь запустите:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui  import WebDriverWait

options = Options()
options.add_argument("--headless")
user_agent = 'I LIKE CHOCOLATE'
options.add_argument(f'user-agent={user_agent}')
driver = webdriver.Chrome(chrome_options=options)
driver.set_window_size(1024, 600)
options.add_argument("--headless");
driver.maximize_window()

driver.get('https://www.sportsbet.com.au/betting/soccer?LeftNav')

wait = WebDriverWait(driver, 10)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".link")))
print('hi')

УСПЕХ!

person Community    schedule 24.12.2017

Приведенная ниже конфигурация решила мою проблему.

    final ChromeOptions options = new ChromeOptions();
    options.addArguments("--window-size=1920,1080");
    options.addArguments("--allow-insecure-localhost");
    options.addArguments("--headless");
    options.addArguments("--disable-gpu");
    options.addArguments("--no-sandbox");
    DesiredCapabilities caps = DesiredCapabilities.chrome();
    caps.setCapability(ChromeOptions.CAPABILITY, options);
    caps.setCapability("acceptInsecureCerts", caps);
    WebDriver driver = new ChromeDriver(options);
person Mahadev Gouda    schedule 12.09.2020