python - Python selenium:这段代码有什么问题?
问题描述
下面的代码是 selenium 代码的一部分,用于选择游戏然后提交它......有时,当赔率发生变化时,会出现一个新按钮“接受变化”,我已经尝试使用下面的代码但仍然每当发生奇怪的变化时,它就不起作用。脚本总是在 Accept Changes 处停止,但有例外。我需要帮助请...
driver.find_element_by_xpath("//*[@id='j_stay']/div/div[3]/div/span/input").send_keys(Keys.CONTROL + "a")
driver.find_element_by_xpath("//*[@id='j_stay']/div/div[3]/div/span/input").send_keys(Keys.DELETE)
driver.find_element_by_xpath("//*[@id='j_stay']/div/div[3]/div/span/input").send_keys('300')
time.sleep(2)
elems = driver.find_elements_by_xpath("//span[text()[normalize-space()='Accept Changes']]")
if len(elems) > 0 and elems[0].is_displayed():
elems[0].click()
time.sleep(2)
driver.find_element_by_xpath("//*[@id='j_buyer']/div[2]/div[4]/div/div[5]/button").click()
time.sleep(2)
driver.find_element_by_xpath("//*[@id='j_buyer']/div[2]/div[4]/div/div[6]/div/div[2]/button[2]").click()
time.sleep(2)
driver.find_element_by_xpath("//span[text()[normalize-space()='OK']]").click()
time.sleep(1)
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.HOME)
time.sleep(1)
else:
driver.find_element_by_xpath("//*[@id='j_buyer']/div[2]/div[4]/div/div[5]/button").click()
time.sleep(2)
driver.find_element_by_xpath("//*[@id='j_buyer']/div[2]/div[4]/div/div[6]/div/div[2]/button[2]").click()
time.sleep(2)
driver.find_element_by_xpath("//span[text()[normalize-space()='OK']]").click()
time.sleep(1)
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.HOME)
time.sleep(1)
解决方案
听起来使用你的睡眠是这里的问题:
time.sleep(2)
elems = driver.find_elements_by_xpath("//span[text()[normalize-space()='Accept Changes']]")
您可能想要等待某些东西……也许是为了显示它(如果没有更多上下文很难说。试试这个:
element = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.XPATH, "//span[text()[normalize-space()='Accept Changes']]"))
element.click()
推荐阅读
- python - python中的有序排列
- python - 运行此程序时,我不断收到此错误。我已经尝试了我能想到的一切,但仍然无法正常工作
- django - Django ORM在没有模型形式的情况下保存上传的文件
- postgresql - 在 PostgreSQL 列中存储特殊(拼音字母)字符
- asp.net-core-3.1 - 如何从 .net core 3.1 api 响应中删除“服务器”标头?
- verilog - 数组声明区别verilog
- ios - 将DAO层(领域或核心数据)作为多线程应用程序的单例是否可以?
- laravel - 使用 ShouldQueue 通知电子邮件序列化错误与缺少请求对象错误
- oauth-2.0 - Ejabberd 18.12.1 - X-OAUTH2 因令牌无效而失败 - 如何设置?
- laravel - 如何在 Godaddy 主机上托管 laravel 网站