我正在网站上搜寻机票信息。
url='https://www.vividseats.com/nhl-hockey/los-angeles-kings-tickets/kings-vs-canucks-2-14-2751065.html'
我正在使用Selenium和Python。我可以使用ChromeWebDriver进入页面,然后单击弹出窗口。我试着把左边的票证信息刮到下面
<ul class='ticket-rows'>
通过使用driver.find_elements_by_class_name。
然而,这只是在名单的上半部分。一旦画面向下滚动,就会有更多的票出现。很明显,仅仅是刮擦并没有得到下半部的票。
我试图抓住票的类别,然后使用
import Keys
send_keys(Keys.END)
在元素上滚动到帧的末尾,然后刮取票据。但我一直在
WebDriverException: Message: unknown error: cannot focus element
错误。
我寻找了这个框架,但是没有可以让我切换到的iframe。这是一个内联框架,在页面中,我无法切换到这个滚动到页面底部。
我需要做什么才能滚动到这个框架的底部,这样我就可以刮票了?我不是问怎么刮,只是想知道怎么把这个滚动到底
谢啦
编辑:包括@DebanjanB要求我尝试的代码
来自硒。网络驱动程序。常见的关键点导入关键点
1)
scroll = driver.find_element_by_class_name('value-score')
scroll.click()
scroll.send_keys(Keys.END)
2)
scroll = driver.find_element_by_class_name('row-container')
scroll.send_keys(Keys.END)
3)
scroll = driver.find_element_by_class_name('row')
scroll.send_keys(Keys.END)
他们最后都返回了错误
WebDriverException: Message: unknown error: cannot focus element
如果您想删除整个列表,则需要向下滚动,否则元素将不可见。
所以尝试下面的代码,它会先向下滚动,直到没有元素留下,然后为你检索信息和打印。
// Some driver initialization code
driver.get("https://www.vividseats.com/nhl-hockey/los-angeles-kings-tickets/kings-vs-canucks-2-14-2751065.html");
driver.findElement(By.xpath("//button[text()='SKIP']")).click();
String xPath = "//ul[@class='ticket-rows']/article";
// Getting initial visible rows
List<WebElement> rows = driver.findElements(By.xpath(xPath));
while(true) {
// Scrolling down to the last row so that remaining rows get visible
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", rows.get(rows.size()-1));
// Getting latest loaded visible rows count
List<WebElement> tempRows = driver.findElements(By.xpath(xPath));
// System.out.println(rows.size()+" <<<===>>> "+tempRows.size());
// If the latest rows count is greater than the previous rows count then we need to do the scroll down again otherwise break the loop
if(tempRows.size() > rows.size()) {
rows = tempRows;
} else {
break;
}
}
// Printing the name and the price, you can change it to your convenience
List<WebElement> data = driver.findElements(By.xpath(xPath+"//strong"));
for(WebElement element : data) {
System.out.println(element.getText().trim());
}
以下是Python中的端到端代码:
from selenium import webdriver
driver = webdriver.Chrome('C:\\NotBackedUp\\chromedriver.exe')
driver.get('https://www.vividseats.com/nhl-hockey/los-angeles-kings-tickets/kings-vs-canucks-2-14-2751065.html')
popUp = driver.find_element_by_xpath("//button[text()='SKIP']");
popUp.click()
xPath = "//ul[@class='ticket-rows']/article";
rows = driver.find_elements_by_xpath(xPath)
while True:
driver.execute_script("arguments[0].scrollIntoView(true);", rows[-1])
tmpRows = driver.find_elements_by_xpath(xPath)
if len(tmpRows) > len(rows) :
rows = tmpRows
else:
break
for element in driver.find_elements_by_xpath(xPath+"//strong"):
print(element.text)
print("Done...")
我希望它能帮助。。。
问题内容: 我的 JavaScript 行: 我的 webdriver 代码行: 当我运行测试时,它将引发以下异常: 因此,我一直在寻找解决方案。铬Google代码网站中报告了一些问题。有关使用,有很多建议。但这对我来说似乎不是更好的解决方案,因为它可以使浏览器依赖代码。 问题答案: 几个小时后,我终于找到了使用不带JavascriptExecuter的操作的解决方案: 好吧,它为我工作。但是,这
我正在从包含javascript(评论)的丝芙兰网站上抓取产品评论,但我无法抓取。这是我的代码: 输出为: 回溯(最近的最后一次调用):文件"resgt.py",第15行,在审查中=driver.find_element_by_class_name('css-1jg2pb9 eanm77i0')文件"/home/danish-khan/minicon da3/lib/python3.7/site-
我正在尝试用Selenium选择一个值。 你能帮我纠正一下情况吗?
我一直试图使用Selenium sendkeys(),但没有成功使用Chrome。我在这里研究过类似的问题,但似乎没有成功。我可以生成URL,调用按钮(click()),但是当我试图在特定的文本字段中输入值时,我会得到: 线程“main”org.openqa.selenium.WebDriverException中出现异常:未知错误:无法聚焦元素。
我正在尝试使用java和Eclipse学习Selenium。我试图找到网页中的一个元素。 我尝试使用这行代码单击一个html元素: 下图显示了页面的html结构:
问题内容: 我正在尝试抓取以下网站:https : //www.bancosantander.es/es/particulares/prestamos/prestamo- coche/simulador 我正在尝试做的是: 通过移动滑块来模拟数量和持续时间。我正在尝试使用网络驱动程序找到它们。 但是我不能,事实上我已经开始抓取了。 出现的错误如下: 我的代码: 问题答案: 您可以尝试以下方法输入值