Если ваш столбец даты является строкой формата '2017-01-01', вы можете использовать pandas astype для преобразования его в datetime.
df['date'] = df['date'].astype('datetime64[ns]')
или использовать datetime64 [D], если вы хотите, чтобы точность дня, а не наносекунды
print(type(df_launath['date'].iloc[0]))
дает
<class 'pandas._libs.tslib.Timestamp'>
то же самое, что и при использовании pandas.to_datetime
Вы можете попробовать его с другими форматами, тогда «% Y-% m-% d», но по крайней мере это работает.
Это типичный org.openqa.selenium.WebDriverException
, который продолжается java.lang.RuntimeException
.
Поля этого исключения:
BASE_SUPPORT_URL
: protected static final java.lang.String BASE_SUPPORT_URL
DRIVER_INFO
: public static final java.lang.String DRIVER_INFO
SESSION_ID
: public static final java.lang.String SESSION_ID
О вашей индивидуальной usecase ошибка сообщает все:
WebDriverException: Element is not clickable at point (x, y). Other element would receive the click
Из вашего кодового блока видно, что вы wait
определены как WebDriverWait wait = new WebDriverWait(driver, 10);
, но вы вызываете метод click()
для элемента до того, как ExplicitWait
вступает в игру, как в until(ExpectedConditions.elementToBeClickable)
.
Ошибка Element is not clickable at point (x, y)
может возникать из-за разных факторов. Вы можете обратиться к ним с помощью одной из следующих процедур:
1. Элемент не получает клика из-за присутствия JavaScript или вызовов AJAX
Попробуйте использовать Actions
Класс:
WebElement element = driver.findElement(By.id("navigationPageButton"));
Actions actions = new Actions(driver);
actions.moveToElement(element).click().build().perform();
2. Элемент не получает щелчок, поскольку он не находится в пределах Viewport
Попробуйте использовать JavascriptExecutor
, чтобы привести элемент в Viewport:
WebElement myelement = driver.findElement(By.id("navigationPageButton"));
JavascriptExecutor jse2 = (JavascriptExecutor)driver;
jse2.executeScript("arguments[0].scrollIntoView()", myelement);
3. Страница становится обновленной до того, как элемент становится доступным.
В этом случае вызывают ExplicitWait
i.e WebDriverWait
, как указано в пункте 4.
4. Элемент присутствует в DOM, но не доступен для клика.
В этом случае вызывать ExplicitWait
с ExpectedConditions
, установленным на elementToBeClickable
, для элемента, который можно щелкнуть:
WebDriverWait wait2 = new WebDriverWait(driver, 10);
wait2.until(ExpectedConditions.elementToBeClickable(By.id("navigationPageButton")));
5. Элемент присутствует, но имеет временное наложение.
В этом случае вызывать ExplicitWait
с ExpectedConditions
, установленным на invisibilityOfElementLocated
, чтобы наложение было невидимым.
WebDriverWait wait3 = new WebDriverWait(driver, 10);
wait3.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("ele_to_inv")));
6. Элемент присутствует, но имеет постоянный Overlay.
Используйте JavascriptExecutor
, чтобы отправить клик непосредственно на элемент.
WebElement ele = driver.findElement(By.xpath("element_xpath"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", ele);
Вы можете попробовать
WebElement navigationPageButton = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(By.id("navigationPageButton")));
navigationPageButton.click();
WebElement element = driver.findElement(By.id("navigationPageButton")); Actions actions = new Actions(driver); actions.moveToElement(element).click().perform();
– fg78nc
4 July 2017 в 18:59
Я столкнулся с этой ошибкой, пытаясь щелкнуть какой-то элемент (или его наложение, мне все равно), а другие ответы не сработали для меня. Я исправил его, используя API-интерфейс elementFromPoint
DOM, чтобы найти элемент, который Selenium хотел, чтобы я нажал на него:
element_i_care_about = something()
loc = element_i_care_about.location
element_to_click = driver.execute_script(
"return document.elementFromPoint(arguments[0], arguments[1]);",
loc['x'],
loc['y'])
element_to_click.click()
Надеюсь, это поможет кому-то!
Если вам нужно использовать его с Javascript
, мы можем использовать аргументы [0] .click () для имитации операции щелчка.
var element = element(by.linkText('webdriverjs'));
browser.executeScript("arguments[0].click()",element);
Прокрутка страницы до ближайшей точки, упомянутой в исключении, сделала трюк для меня. Ниже приведен фрагмент кода:
$wd_host = 'http://localhost:4444/wd/hub';
$capabilities =
[
\WebDriverCapabilityType::BROWSER_NAME => 'chrome',
\WebDriverCapabilityType::PROXY => [
'proxyType' => 'manual',
'httpProxy' => PROXY_DOMAIN.':'.PROXY_PORT,
'sslProxy' => PROXY_DOMAIN.':'.PROXY_PORT,
'noProxy' => PROXY_EXCEPTION // to run locally
],
];
$webDriver = \RemoteWebDriver::create($wd_host, $capabilities, 250000, 250000);
...........
...........
// Wait for 3 seconds
$webDriver->wait(3);
// Scrolls the page vertically by 70 pixels
$webDriver->executeScript("window.scrollTo(0, 70);");
ПРИМЕЧАНИЕ. Я использую Facebook php webdriver