我正在尝试点击BusinessWire网页底部的“下一步”按钮。我有一些代码从BusinessWire主页到我想要的搜索结果页面。我希望能够点击该页面的“下一步”按钮,但是我收到错误消息,告诉我“下一个”元素在点(X,Y)处不可点击。下一个按钮位于窗口底部。出于某种原因
browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
命令不像我预期的那样滚动。因为窗口没有按预期滚动,所以单击元素是不可见的(至少我认为这是问题所在)。我在代码中使用了两次相同的命令,它在这两个实例中工作正常。任何有关使窗口滚动的帮助将不胜感激。这是我的代码:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
def BusinessWire():
browser = webdriver.Chrome()
browser.get('http://www.businesswire.com/portal/site/home/')
search_box_element = browser.find_element_by_id('bw-search-
input')
search_box_element.clear()
search_box_element.send_keys('biotechnology')
search_box_element.send_keys(Keys.ENTER)
browser.execute_script("window.scrollTo(0,
document.body.scrollHeight);")
search_box_element_two = browser.find_element_by_id('more-news-
results')
search_box_element_two.click()
browser.execute_script("window.scrollTo(0,
document.body.scrollHeight);")
time.sleep(5)
next_page_click_element = WebDriverWait(browser, 10).until(
EC.presence_of_element_located((By.XPATH, '//*[@id="more-news-pagination"]/div/div[1]/div/a'))
)
next_page_click_element.click()
答案 0 :(得分:0)
StackOverFlow不允许我发布更多评论?网址在代码中。但主页网址不是问题页面。问题页面是主页后面的搜索页面。搜索页面只能通过主页上的搜索来获取。我的代码完成了所有这些。
答案 1 :(得分:0)
尝试使用要滚动到的元素的scrollIntoView,抱歉这是在Java中,但在python中应该是一样的:
driver.manage().window().maximize();
driver.get("http://www.businesswire.com/portal/site/home/");
wait = new WebDriverWait(driver, 10);
driver.findElement(By.id("bw-search-input")).clear();
driver.findElement(By.id("bw-search-input")).sendKeys("biotechnology");
driver.findElement(By.id("bw-search-input")).sendKeys(Keys.ENTER);
WebElement clicklink = driver.findElement(By.id("more-news-results"));
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", clicklink);
clicklink.click();
Thread.sleep(1000);
WebElement clicknext = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id=\"more-news-pagination\"]/div/div[1]/div/a")));
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", clicknext);
clicknext.click();