我正在尝试使用selenium Python从右到左更改文本的输入方向。
键盘中的正常键序列是CTRL + SHIFT(右侧)。
我尝试了以下内容:
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 import ActionChains
def testLangDirChange(self):
self.driver.get("http://unixpapa.com/js/testkey.html")
XPathTB='//textarea[@name="t"]'
WebDriverWait(self.driver, 15).until(EC.presence_of_element_located((By.XPATH, XPathTB)))
TB=self.driver.find_element_by_xpath(XPathTB)
TB.click()
actionChains=ActionChains(self.driver)
actionChains.key_down(Keys.CONTROL).key_down(Keys.SHIFT).key_up(Keys.CONTROL).key_up(Keys.SHIFT).perform()
我在测试仪中看到了正确的按键序列,但打字方向没有改变(我仍然从左到右)。
我也尝试过:
firefoxProfile.native_events_enabled = False
firefoxProfile.set_preference("intl.accept_languages", 'he-IL')
但它没有帮助。
(你必须有一个向右的左键盘布局,比如希伯来语才能测试)
更新1 :
我刚在测试网站上启用了以下复选框:修饰符,DOM 3,旧DOM 3并比较了两个输出。我所看到的是,在selenium中输入的是location = 1,在键盘测试中它是location = 2.
当我执行Keys.SHIFT时,Selenium可能会左键移位(尽管键中的LEFT SHIFT键是单独指定的)?
更新2:
我在模块内找到了selenium.webdriver.common.keys.Keys以下内容:
SHIFT = '\ue008'
LEFT_SHIFT = SHIFT
所以他们确实定义相同。如何在那里指定右移?
答案 0 :(得分:0)
我不确定您的WebDriver可以将命令发送到操作系统级别,我认为它的作用是仅在浏览器中运行。相反,为什么不尝试直接使用sendKeys(otherLang)输入其他语言?
答案 1 :(得分:0)
我最终使用以下方式运行AutoIt脚本:
使用os.system(R ' “C:\路径\ changeLangDir.exe”')
内容:
send("{RCTRL}{RSHIFT}")
另一个解决方案是将dir =“ltr”标签设置为dir =“rtl”
使用:
self.driver.execute_script("arguments[arguments.length-1].dir = 'rtl';", TB)
答案 2 :(得分:0)
经过大量搜索,我找到了更改chromedriver语言和使用python的解决方案。我正在使用linux.this为您工作。
options = Options()
options.binary_location = "/Applications/Google\
Chrome.app/Contents/MacOS/Google\ Chrome"
options = Options()
options.add_argument("start-maximized")
prefs = {
"translate_whitelists": {"fr": "en", "de": "en", 'it': 'en', 'no': 'en', 'es':
'en', 'sv': 'en', 'nl': 'en',
'da': 'en', 'pl': 'en', 'fi': 'en', 'cs': 'en'},
"translate": {"enabled": "true"}
}
options.add_experimental_option("prefs", prefs)