我已经使用硒创建了一个脚本来获取动态生成的文本。我必须使用硒,因此在这种情况下,我不想使用xhr。我正在尝试在硒中使用pseudo selector
在其中定义explicit wait
。由于硒不像pseudo selector
中那样支持:contains()
,因此我使用了javascript命令driver.execute_script()
来达到目的。
现在,我尝试的方法不一致,因为我想抓取的文本不在视口内。如果在脚本运行时手动向下滚动一点,它就可以工作。顺便说一句,Xpath不是一个选择。
如何在driver.execute_script()中使用伪选择器时将元素滚动到视图中?
我已经尝试过[不一致工作]:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
with webdriver.Chrome() as driver:
wait = WebDriverWait(driver, 10)
driver.get('https://www.nyse.com/quote/XNYS:AAN')
item = wait.until(
lambda driver: driver.execute_script('''return $('span:contains("AARONS")')[0];''')
)
print(item.text)
预期结果:
AARONS INC
PS在将此帖子标记为重复之前,请确保您至少已阅读问题的标题。
参考方案
您可以使用返回的WebElement
执行另一个JavaScript命令
item = wait.until(
lambda d: d.execute_script('''return $('span:contains("AARONS")')[0];''')
)
driver.execute_script('arguments[0].scrollIntoView();', item)
或在一个脚本中
item = wait.until(
lambda d: d.execute_script(
'''var el = $('span:contains("AARONS")')[0];
if (typeof el !== "undefined") {
el.scrollIntoView();
}
return el;''')
)
这将等到元素存在并将其滚动到视图中。
单行的'if'/'for'语句是否使用Python样式好? - python我经常在这里看到某人的代码,看起来像是“单线”,这是一条单行语句,以传统的“if”语句或“for”循环的标准方式执行。我在Google周围搜索,无法真正找到可以执行的搜索类型?任何人都可以提出建议并最好举一些例子吗?例如,我可以一行执行此操作吗?example = "example" if "exam" in exam…
为什么使用'=='或'is'比较字符串有时会产生不同的结果? - python我有一个Python程序,其中将两个变量设置为'public'值。在条件表达式中,我有比较var1 is var2失败,但如果将其更改为var1 == var2,它将返回True。现在,如果我打开Python解释器并进行相同的“是”比较,则此操作成功。>>> s1 = 'public' >>…
在返回'Response'(Python)中传递多个参数 - python我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…
python JSON对象必须是str,bytes或bytearray,而不是'dict - python在Python 3中,要加载以前保存的json,如下所示:json.dumps(dictionary)输出是这样的{"('Hello',)": 6, "('Hi',)": 5}当我使用json.loads({"('Hello',)": 6,…
sqlite3连接用作上下文管理器的事务不是原子的 - pythonAccording to the documentation, 连接对象可用作自动提交或回滚事务的上下文管理器。发生异常时,事务将回滚;否则,将提交事务:我知道with语句中的所有内容都应该是原子事务。现在考虑这段代码import sqlite3 con = sqlite3.connect(':memory:') try: with co…